gpt4 book ai didi

python - 使用 sklearn 在 PCA 中恢复解释变量比率的特征名称

转载 作者:IT老高 更新时间:2023-10-28 20:26:54 25 4
gpt4 key购买 nike

我正在尝试从使用 scikit-learn 完成的 PCA 中恢复,哪些特征被选择为相关

IRIS 数据集的经典示例。

import pandas as pd
import pylab as pl
from sklearn import datasets
from sklearn.decomposition import PCA

# load dataset
iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)

# normalize data
df_norm = (df - df.mean()) / df.std()

# PCA
pca = PCA(n_components=2)
pca.fit_transform(df_norm.values)
print pca.explained_variance_ratio_

返回

In [42]: pca.explained_variance_ratio_
Out[42]: array([ 0.72770452, 0.23030523])

如何恢复哪两个特征允许数据集中这两个解释的差异?换一种说法,如何在 iris.feature_names 中获取此功能的索引?

In [47]: print iris.feature_names
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']

提前感谢您的帮助。

最佳答案

此信息包含在 pca 属性中:components_。如 documentation 中所述, pca.components_ 输出一个 [n_components, n_features] 数组,因此要了解码件如何与不同特征线性相关,您必须:

注意:每个系数代表了一对特定的组件和特征之间的相关性

import pandas as pd
import pylab as pl
from sklearn import datasets
from sklearn.decomposition import PCA

# load dataset
iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)

# normalize data
from sklearn import preprocessing
data_scaled = pd.DataFrame(preprocessing.scale(df),columns = df.columns)

# PCA
pca = PCA(n_components=2)
pca.fit_transform(data_scaled)

# Dump components relations with features:
print(pd.DataFrame(pca.components_,columns=data_scaled.columns,index = ['PC-1','PC-2']))

sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
PC-1 0.522372 -0.263355 0.581254 0.565611
PC-2 -0.372318 -0.925556 -0.021095 -0.065416

重要提示:作为旁注,请注意 PCA 符号不会影响其解释,因为该符号不会影响每个组件中包含的方差。只有形成 PCA 维度的特征的相对符号很重要。事实上,如果您再次运行 PCA 代码,您可能会得到带有反转符号的 PCA 尺寸。关于这一点的直觉,想想一个向量和它在 3-D 空间中的负数——两者本质上都表示空间中的相同方向。查看 this post供进一步引用。

关于python - 使用 sklearn 在 PCA 中恢复解释变量比率的特征名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22984335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com