我正在使用Python。我将内核PCA应用于' rbf'内核(我也尝试了其他选项)使用了来自sklearn的Python的KernelPCA包。
这样做时,我收到警告
"RuntimeWarning: invalid value encountered in sqrt
return np.dot(K, self.alphas_ / np.sqrt(self.lambdas_))"
lambdas是矩阵的特征值。我认为错误是特征值是NaN。
仍然执行PCA(以上是"只是"警告),但结果减少的矩阵在某些列中具有NaN值,这似乎表明出现了问题(不仅仅是警告,而是实际上错)。
基本上,我该如何处理/解释这个结果?
简单地忽略那些NaN列并使用简化矩阵是否有意义?我之所以不这样做的原因是因为逆映射会发生什么(从简化到完整矩阵)?但话说再说一遍,sklearn本身并没有给出错误,所以也许有希望?
我不是PCA的专家。原始/完整矩阵有~350列和200行。在PCA之前标准化矩阵(平均零和单位方差)没有帮助。有人知道发生了什么/如何分析错误吗?
如果可能,我愿意接受其他降维技术。
我现在的想法是减少矩阵直到它表现良好并且迭代地将其构建到破坏点。但是,最后,我宁愿按原样使用整个矩阵(或者至少可以说矩阵非常糟糕,以至于我永远无法进行PCA,或者某种东西)。