gpt4 book ai didi

python - LinAlg错误: SVD did not converge in matplotlib PCA

转载 作者:行者123 更新时间:2023-12-01 04:56:40 24 4
gpt4 key购买 nike

我试图在 matplotlib 中的矩阵上进行 PCA,但不断遇到 LinAlgError: SVD 未收敛。我检查了我的数据是否有错误值。我能够在类似的数据集上实现 PCA,没有任何问题,但在这种情况下,我切换了维度,因为行数必须大于 PCA 类的列数。我的矩阵有 345 行和 146 列, float 在 0.0 到 1.0 之间。我不确定这里发生了什么或如何调试。我正在 iPython 中工作,如果这有什么不同的话,我有最新版本的 numpy 和 scipy (我在以前的版本中读到有与此函数相关的错误)。

我也在同一单元格上遇到此警告,我不确定它是否相关:

运行时警告:true_divide 中遇到无效值

返回(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))

如果有人对我如何找出导致问题的原因有任何提示,我将非常感激。

最佳答案

master 中的一列可能是常量。看一下np.std(master)。如果其中一个值为 0,则 master 对应的列是常量。如果是这种情况,您可以使用 pca = PCA(np.array(master), standardize=False) 作为可能的解决方法。 standardize 参数告诉 PCA 是否将每列中的数据除以该列的标准差。 (或者您可以删除常量列。无论如何它都不会提供任何有用的信息,因此忽略它不会有什么坏处。)

关于python - LinAlg错误: SVD did not converge in matplotlib PCA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27211263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com