gpt4 book ai didi

python - 主成分分析最重要的原始特征

转载 作者:太空狗 更新时间:2023-10-29 23:57:27 24 4
gpt4 key购买 nike

我正在做 PCA,我对哪些原始特征最重要很感兴趣。让我用一个例子来说明这一点:

import numpy as np
from sklearn.decomposition import PCA
X = np.array([[1,-1, -1,-1], [1,-2, -1,-1], [1,-3, -2,-1], [1,1, 1,-1], [1,2,1,-1], [1,3, 2,-0.5]])
print(X)

哪些输出:

[[ 1.  -1.  -1.  -1. ]
[ 1. -2. -1. -1. ]
[ 1. -3. -2. -1. ]
[ 1. 1. 1. -1. ]
[ 1. 2. 1. -1. ]
[ 1. 3. 2. -0.5]]

凭直觉,人们已经可以说特征 1 和特征 4 不是很重要,因为它们的方差很小。让我们在这个集合上应用 pca:

pca = PCA(n_components=2)
pca.fit_transform(X)
comps = pca.components_

输出:

array([[ 0.        ,  0.8376103 ,  0.54436943,  0.04550712],
[-0. , 0.54564656, -0.8297757 , -0.11722679]])

此输出表示每个原始特征对于两个主成分中的每一个的重要性(参见 this 以供引用)。换句话说,对于第一个主成分,特征 2 最重要,其次是特征 3。对于第二个主成分,特征 3 看起来最重要。

问题是,哪个特征最重要,哪个第二重要等等?我可以为此使用 component_ 属性吗?还是我错了,PCA 不是进行此类分析的正确方法(我应该改用特征选择方法)吗?

最佳答案

component_ 属性不是寻找特征重要性的正确位置。两个数组中的负载(即两个组件 PC1 和 PC2)告诉您原始矩阵如何被每个特征转换(合在一起,它们形成一个旋转矩阵)。但它们不会告诉您每个组件对描述转换后的特征空间有多大贡献,因此您还不知道如何比较两个组件的负载。

然而,answer您链接的实际上告诉您应该使用什么:explained_variance_ratio_ 属性。该属性告诉您每个主成分解释了特征空间中的多少方差:

In [5]: pca.explained_variance_ratio_
Out[5]: array([ 0.98934303, 0.00757996])

这意味着第一个主成分解释了几乎 99% 的方差。您从 components_ 知道 PC1 对第二个功能的负载最高。因此,特征 2 是数据空间中最重要的特征。特征 3 是下一个最重要的特征,因为它在 PC1 中具有第二高的负载。

在 PC2 中,特征 2 和特征 3 之间的绝对载荷几乎互换。但由于 PC2 几乎没有解释整体方差,因此可以忽略这一点。

关于python - 主成分分析最重要的原始特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42422201/

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