当n个样本小于n个特征时,pca score/score\u samples函数抛出ValueError

2024-04-25 03:44:42 发布

您现在位置:Python中文网/ 问答频道 /正文

对n\u样本进行PCA时

以下代码将抛出错误。n\u samples为5,可以通过设置n\u components<;5来避免错误。你知道吗

from sklearn.decomposition import PCA
import numpy as np

pca = PCA()
train = np.random.rand(5,100)
pca.fit(train)
pca.score(np.random.rand(5,100))

预期结果:
当n\u采样时,score函数显示默认n\u组件设置的工作

错误日志:

Traceback (most recent call last):

File "", line 7, in 
pca.score(np.random.rand(5,100))

File "C:\ProgramData\Anaconda3\envs\python2\lib\site-packages\sklearn\decomposition\pca.py", line 594, in score
return np.mean(self.score_samples(X))

File "C:\ProgramData\Anaconda3\envs\python2\lib\site-packages\sklearn\decomposition\pca.py", line 569, in score_samples
precision = self.get_precision()

File "C:\ProgramData\Anaconda3\envs\python2\lib\site-packages\sklearn\decomposition\base.py", line 76, in get_precision
np.dot(linalg.inv(precision), components_))

File "C:\ProgramData\Anaconda3\envs\python2\lib\site-packages\scipy\linalg\basic.py", line 946, in inv
a1 = _asarray_validated(a, check_finite=check_finite)

File "C:\ProgramData\Anaconda3\envs\python2\lib\site-packages\scipy_lib_util.py", line 238, in _asarray_validated
a = toarray(a)

File "C:\ProgramData\Anaconda3\envs\python2\lib\site-packages\numpy\lib\function_base.py", line 1215, in asarray_chkfinite
"array must not contain infs or NaNs")

ValueError: array must not contain infs or NaNs

Tags: inpylibpackagesnplinesitesklearn