Я могу выполнить PCA в scikit по коду ниже: 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 документация говорит:
components_: array, [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))