【发布时间】:2018-06-22 03:32:06
【问题描述】:
当我将内核 PCA 的功能数量设置为 40 以上时,会出现如下错误:
/opt/conda/lib/python3.6/site-packages/sklearn/decomposition/kernel_pca.py:262:
RuntimeWarning: invalid value encountered in sqrt
X_transformed = self.alphas_ * np.sqrt(self.lambdas_)
下面是我使用的代码:
from sklearn.decomposition import PCA, KernelPCA
from sklearn import svm
import numpy as np
print(testX.shape,np.isnan(testX_yaleA.all()),np.isfinite(testX_yaleA.all()))
(41, 77760) False True
kpca_rbf = KernelPCA(41,kernel="rbf", fit_inverse_transform=False, gamma=0.01)
Xtest_kpca = kpca_rbf.fit_transform(testX_yaleA)
我很困惑为什么会发生这种情况,可能是由于数组的大小(41,77760)?
【问题讨论】:
-
你能提供你的数据样本吗?给定消息,它看起来更像是一个算术警告,而不是内存问题。同样,这是一个警告,您的 pca 是否失败?
-
我会尽快提供样品。另外,如果我指定的维度多于样本数,则 kpca 不会失败,但是,无论我指定什么,它都会返回与样本数相同的组件数。
标签: python numpy scipy scikit-learn feature-extraction