- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在做 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/
Haskell 是一种具有许多 Root 于形式数学的特征的语言。我应该学习哪些数学主题才能更深入地了解和理解这门语言?例如,我认为抽象代数和范畴论都是值得探索的好话题。 最佳答案 一般来说,离散数学
大多数创建位图上下文的代码使用 kCGImageAlphaPremultipliedFirst 来创建 ARGB,而不是使用 kCGImageAlphaPremultipliedLast 来创建 RG
我是一名优秀的程序员,十分优秀!