【发布时间】:2016-08-02 16:28:32
【问题描述】:
我可以通过以下代码在 scikit 中执行 PCA: X_train 有 279180 行和 104 列。
from sklearn.decomposition import PCA
pca = PCA(n_components=30)
X_train_pca = pca.fit_transform(X_train)
现在,当我想将特征向量投影到特征空间时,我必须执行以下操作:
""" Projection """
comp = pca.components_ #30x104
com_tr = np.transpose(pca.components_) #104x30
proj = np.dot(X_train,com_tr) #279180x104 * 104x30 = 297180x30
但我对这一步犹豫不决,因为 Scikit documentation 说:
components_: 数组,[n_components, n_features]
特征空间中的主轴,表示数据中最大方差的方向。
在我看来,它已经被投影了,但是当我检查源代码时,它只返回特征向量。
投影的正确方法是什么?
最终,我的目标是计算重建的 MSE。
""" Reconstruct """
recon = np.dot(proj,comp) #297180x30 * 30x104 = 279180x104
""" MSE Error """
print "MSE = %.6G" %(np.mean((X_train - recon)**2))
【问题讨论】:
标签: python machine-learning scikit-learn pca