首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sklearn.decomposition.PCA explained_variance_ratio_属性不存在

sklearn.decomposition.PCA explained_variance_ratio_属性不存在
EN

Data Science用户
提问于 2018-10-18 23:46:43
回答 3查看 12.2K关注 0票数 1

当试图使用explained_variance_ratio_属性sklearn.decomposition.PCA识别dataset的前两列所解释的方差时,我会收到以下错误:

代码语言:javascript
复制
AttributeError: 'PCA' object has no attribute 'explained_variance_ratio_'

我的代码(浓缩):

代码语言:javascript
复制
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_

当执行最后一行时,我得到了错误:

代码语言:javascript
复制
AttributeError: 'PCA' object has no attribute 'explained_variance_ratio_'

我使用的是sklearn版本0.20.0

编辑

在检查了sklearn.decomposition.PCA的属性之后,我发现该属性确实不存在(如图像所示)。

EN

回答 3

Data Science用户

发布于 2018-12-23 00:22:05

这是未经测试的,但我相信会发生错误,因为您正在调用对fit_transform对象的解释方差,而不仅仅是fit的结果。

尝试:

代码语言:javascript
复制
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_
票数 3
EN

Data Science用户

发布于 2018-10-19 04:25:57

问题是,您不需要再次通过PCA算法传递您的参数(本质上看起来您所做的是两次PCA )。只需将.explained_variance_ratio_添加到指定PCA的变量的末尾即可。

例如,尝试:

代码语言:javascript
复制
pca = PCA(n_components=2).fit_transform(df_transform)

var_exp =设置为:

代码语言:javascript
复制
var_exp = pca.explained_variance_ratio_
票数 1
EN

Data Science用户

发布于 2023-01-29 00:24:24

那就检查一下你的版本。属性explained_variance_ratio_存在到此日期的最新版本sklearn 1.2.1。

https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/39898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档