引发LinAlgError(“SVD未收敛”)LinAlgError:在matplotlib pca确定中,SVD未收敛。

48

代码:

import numpy
from matplotlib.mlab import PCA
file_name = "store1_pca_matrix.txt"
ori_data = numpy.loadtxt(file_name,dtype='float', comments='#', delimiter=None,
            converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)
result = PCA(ori_data)

虽然我的输入矩阵中没有naninf,但我仍然会遇到以下错误:

    raise LinAlgError("SVD did not converge")
LinAlgError: SVD did not converge

有什么问题吗?


这个代码给我报错了,显示AttributeError: 'numpy.ndarray' object has no attribute 'dropna',你是怎么让它正常工作的? - Charlie Parker
11个回答

0
对我来说,这种情况偶尔会发生,因为我的一些数据未初始化,因为在某个地方初始化是这样的。
a = np.empty((w, h))
a[some, where] = val  # only partial value assignment
result = np.linalg.pinv(a)

注意: np.empty 不会为数组分配值,而只是分配空间,因此它包含垃圾值。

解决方案:初始化所有数据。在我的情况下

a = np.zeros((w, h))
a[some, where] = val  # only partial value assignment
result = np.linalg.pinv(a)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接