sklearn.decomposition.PCA解释_variance_ratio_属性不存在

数据挖掘 Python scikit-学习 主成分分析
2022-03-13 21:55:56

尝试使用 的explained_variance_ratio_属性识别由我的数据集的前两列解释的方差时sklearn.decomposition.PCA,我收到以下错误:

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,我发现该属性确实不存在(如图所示)。

在此处输入图像描述

2个回答

这是未经测试的,但我相信错误正在发生,因为您正在调用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_

问题是您不需要再次通过 PCA 算法传递参数(基本上看起来您正在做的是两次 PCA)。只需在.explained_variance_ratio_分配 PCA 的变量末尾添加 。

例如尝试:

pca = PCA(n_components=2).fit_transform(df_transform)

改为var_exp =

var_exp = pca.explained_variance_ratio_