Scikit learn SKPCA不能产生唯一的结果

Scikit learn SKPCA不能产生唯一的结果,scikit-learn,pca,Scikit Learn,Pca,我试图复制我用另一台电脑写的东西。现在有了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.039

我试图复制我用另一台电脑写的东西。现在有了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()

我认为你做错了什么

在您发布1)完整代码、2)数据、3)完整错误和4)模块版本之前,我将提供一个使用随机数据的示例

使用5000行和4列的示例。

import numpy as np
import pandas as pd

np.random.seed(2)
df = pd.DataFrame(np.random.rand(5000,4))
df1 = df.copy()
pca = PCA(n_components=2, random_state= 2)
for i in range(10):
     pca.fit_transform(df1)
     print(pca.explained_variance_)

[0.08596479 0.08470371]
[0.08596479 0.08470371]
[0.08596479 0.08470371]
[0.08596479 0.08470371]
[0.08596479 0.08470371]
[0.08596479 0.08470371]
[0.08596479 0.08470371]
[0.08596479 0.08470371]
[0.08596479 0.08470371]
[0.08596479 0.08470371]

PCA(…)
中使用
random_state
param使其可复制。不能解决问题什么不能解决问题?您是说将random_state设置为整数值仍然会导致for循环中的不同结果吗?请提出一个可复制的问题。您添加的数据与您使用的数据不一致。