【发布时间】:2018-11-06 18:51:37
【问题描述】:
我正在尝试复制我用另一台计算机编写的内容。现在有了 mac,我得到了这种奇怪的行为。我不知道出了什么问题。在linux下正常工作。
from sklearn.decomposition import PCA
df = df_selected1.values.copy()
pca = PCA(n_components=2)
for i in range(5):
pca.fit_transform(df)
print(pca.explained_variance_)
#output
[ 5.03922837 0.06647913]
[ 15.07182343 1.55837475]
[ 18.83493071 5.11528737]
[ 8.56237035 1.2922362 ]
[ 121.51350407 0.78051842]
编辑:所以如果我的行数少于 60 行,它可以正常工作。如果我添加更多,我会得到错误
LinAlgError: SVD did not converge
示例数据:
df = pd.DataFrame([np.ndarray(90),np.ndarray(90),np.ndarray(90),np.ndarray(90)]).transpose()
【问题讨论】:
-
在
PCA(...)中使用random_state参数来使这个可重现。 -
不能解决问题
-
什么不能解决问题?您是说将 random_state 设置为整数值仍然会在 for 循环中产生不同的结果吗?请提出一个可重现的问题。
-
您添加的数据与您使用的数据不对应。
标签: scikit-learn pca