我试图重现我用另一台电脑写的东西。现在用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()
答案 0 :(得分:-1)
我认为你做错了什么。
在你发布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]