【发布时间】:2014-11-30 08:01:50
【问题描述】:
我正在尝试对 matplotlib 中的矩阵进行 PCA,但一直遇到 LinAlgError:SVD 未收敛。我检查了我的数据是否存在错误值。我能够在类似的数据集上毫无问题地实现 PCA,但在这种情况下,我切换了维度,因为行数必须大于 PCA 类的列数。我的矩阵有 345 行和 146 列介于 0.0 和 1.0 之间的浮点数。我不确定这里发生了什么或如何调试。如果这有所不同,我正在使用 iPython,同时拥有 numpy 和 scipy 的最新版本(我在以前的版本中读过有与此功能相关的错误)。
我也在同一个单元格上遇到这个警告,我不确定它是否相关:
RuntimeWarning: invalid value encountered in true_divide
return (x - self.mu)/self.sigma
这是我的单元格代码:
import numpy as np
from matplotlib.mlab import PCA
t = []
c = []
master = []
for s in sample_master_list.values():
if s.t2d:
t.append(s.pathways.values())
else:
c.append(s.pathways.values())
master = t + c
pca = PCA(np.array(master))
如果有人对我如何找出导致问题的原因有任何提示,我将不胜感激。
【问题讨论】:
-
最好附上带有变量
sample_master_list和s的独立代码,以便我们运行并重现您的问题。
标签: python numpy matplotlib ipython