【发布时间】:2015-07-07 20:39:08
【问题描述】:
我想在矩阵上运行 pca,但只得到一个 numpy.linalg.linalg.LinAlgError。 我附上了矩阵和我的代码。
在此处获取矩阵:http://workupload.com/file/YvSVhGJA
import numpy as np
from sklearn.decomposition import PCA
matrix = np.load("matrix.npy")
transformed = PCA(n_components=3).fit_transform(matrix)
这是完整的堆栈跟踪,但我认为您可以重现它。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/user/anaconda/lib/python2.7/site-packages/sklearn/decomposition/pca.py", line 242, in fit_transform
U, S, V = self._fit(X)
File "/home/user/anaconda/lib/python2.7/site-packages/sklearn/decomposition/pca.py", line 275, in _fit
U, S, V = linalg.svd(X, full_matrices=False)
File "/home/user/anaconda/lib/python2.7/site-packages/scipy/linalg/decomp_svd.py", line 109, in svd
raise LinAlgError("SVD did not converge")
numpy.linalg.linalg.LinAlgError: SVD did not converge
感谢任何帮助。
PS:
np.__version__
'1.9.2'
sklearn.__version__
'0.15.2'
PPS:我正在运行 Linux
【问题讨论】:
-
我正在调查。这不完全是您问题的答案,但您可以使用 RandomizedPCA 作为替代方案,我没有收到任何错误。
-
我无法在我的 Mac 上重现此内容。
-
@cel 错误来自 lapack 例程。您可能有一个不同的版本在计算 SVD 方面做得更好。
-
@user3914041,可能,但很难相信。我也用
anaconda运行代码,所以我没有自己编译numpy/scipy。为什么lapack附带的lapack实现应该对osx有更好的算法? -
Anaconda 加速:numpy 1.9.2,sklearn 15.2。无法重现此错误(ubuntu 64 位(
标签: python numpy anaconda pca svd