如何在 Python 中使用 PCA/SVD 进行特征选择和识别?

2024-01-29

我正在跟进Python 中的主成分分析 https://stackoverflow.com/questions/1730600/principal-component-analysis-in-python在Python下使用PCA,但我很难确定which可供选择的特征(即我的哪些列/特征具有最佳方差)。

当我使用scipy.linalg.svd,它会自动对我的奇异值进行排序,所以我无法分辨它们属于哪一列。

示例代码:

import numpy as np
from scipy.linalg import svd
M = [
     [1, 1, 1, 1, 1, 1],
     [3, 3, 3, 3, 3, 3],
     [2, 2, 2, 2, 2, 2],
     [9, 9, 9, 9, 9, 9]
]
M = np.transpose(np.array(M))
U,s,Vt = svd(M, full_matrices=False)
print s

在不对奇异值进行排序的情况下,是否有其他方法可以解决此问题?

Update:看起来这可能是不可能的,至少根据 Matlab 论坛上的这篇文章:http://www.mathworks.com/matlabcentral/newsreader/view_thread/241607 http://www.mathworks.com/matlabcentral/newsreader/view_thread/241607。如果有人知道其他情况,请告诉我:)


我对 PCA 的印象是错误的特征选择,而相反特征提取.

相反,PCA 创建了一系列新的特征,每个特征都是输入特征的组合。

来自 PCA,如果你真的想做的话特征选择,您可以查看输入特征在 PCA 创建的特征上的权重。例如,matplotlib.mlab.PCA库提供属性中的权重(有关图书馆的更多信息 http://www.clear.rice.edu/comp130/12spring/pca/pca_docs.shtml#a):

from matplotlib.mlab import PCA
res = PCA(data)
print "weights of input vectors: %s" % res.Wt

听起来像特征提取不过,route 是使用 PCA 的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Python 中使用 PCA/SVD 进行特征选择和识别? 的相关文章

随机推荐