我正在尝试对一个维度为m x n的矩阵进行PCA,其中m是特征的数量,n是样本的数量。
假设我想保留具有最大方差的nf
个特征。使用scikit-learn
,我可以这样做:
from sklearn.decomposition import PCAnf = 100pca = PCA(n_components=nf)# X是转置后的矩阵(行是n个样本,列是m个特征)pca.fit(X)X_new = pca.transform(X)
现在,我得到一个新的矩阵X_new
,其形状为n x nf。是否可以知道哪些特征被丢弃或保留了呢?
谢谢
回答:
你的PCA
对象在拟合过程中确定的特征位于pca.components_
中。由pca.components_
张成的向量空间的正交空间被丢弃了。
请注意,PCA不会“丢弃”或“保留”你预定义的任何特征(由你指定的列编码)。它会混合所有特征(通过加权和)来寻找最大方差的正交方向。
如果这不是你想要的行为,那么PCA降维方法可能不适合你。对于一些简单的通用特征选择方法,你可以查看sklearn.feature_selection