当试图使用explained_variance_ratio_属性sklearn.decomposition.PCA识别dataset的前两列所解释的方差时,我会收到以下错误:
AttributeError: 'PCA' object has no attribute 'explained_variance_ratio_'我的代码(浓缩):
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
df = pd.read_csv('Input.csv')
df = df.dropna()
df_transform = StandardScaler().fit_transform(df)
pca = PCA(n_components=2).fit_transform(df_transform)
var_exp = pca.explained_variance_ratio_当执行最后一行时,我得到了错误:
AttributeError: 'PCA' object has no attribute 'explained_variance_ratio_'我使用的是sklearn版本0.20.0
在检查了sklearn.decomposition.PCA的属性之后,我发现该属性确实不存在(如图像所示)。

发布于 2018-12-23 00:22:05
这是未经测试的,但我相信会发生错误,因为您正在调用对fit_transform对象的解释方差,而不仅仅是fit的结果。
尝试:
df = pd.read_csv('Input.csv')
df = df.dropna()
df_transform = StandardScaler().fit_transform(df)
pca = PCA(n_components=2).fit(df_transform)
new_df = pca.transform(df_transform)
var_exp = pca.explained_variance_ratio_发布于 2018-10-19 04:25:57
问题是,您不需要再次通过PCA算法传递您的参数(本质上看起来您所做的是两次PCA )。只需将.explained_variance_ratio_添加到指定PCA的变量的末尾即可。
例如,尝试:
pca = PCA(n_components=2).fit_transform(df_transform)将var_exp =设置为:
var_exp = pca.explained_variance_ratio_发布于 2023-01-29 00:24:24
那就检查一下你的版本。属性explained_variance_ratio_存在到此日期的最新版本sklearn 1.2.1。
https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html
https://datascience.stackexchange.com/questions/39898
复制相似问题