我正在跟随 Python中的主成分分析 使用PCA,但是我不知道如何确定要选择哪些特征(即我的列/特征中哪些具有最佳差异性)。
当我使用
示例代码:
当我使用
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
有没有不排序奇异值的其他方法来完成这个任务?
更新:看起来这可能是不可能的,至少根据 Matlab 论坛上的这篇帖子: http://www.mathworks.com/matlabcentral/newsreader/view_thread/241607。如果有人知道不同的方法,请告诉我 :)
s[0]
对应于左奇异向量U[:,0]
和右奇异向量Vt[0,:]
。 - Steve Tjoa