инверсия PCA от sklearn, ошибка измерения

Попытка понять sklearn.decomposition.PCA API, и это дает мне трудное время.
Я разделил свои данные (40 образцов x 10 образцов) на тренировку (39 выборок) и тестировал подмножества (1 образец).

Я прокомментировал код тем, что я думаю или думаю, что происходит.

X_train, X_test = X_all[ix1], X_all[ix2]

# Instantiate PCA
pca = PCA(n_components=n_comps)

# train the model
X_train_reduced = pca.fit_transform(X_train)

# reduce X_test
X_test_reduced = pca.transform(X_test)

# invert X_test back to original number of components
X_test_inv = pca.inverse_transform(X_test)  # <--- ERROR

....
[this would continue with checking errors bassed on n_comps]

Ошибка в указанной строке гласит следующее:
фигуры (1,40) и (n_comps, 40) не выровнены: 40 (dim 1)! = N_comps (dim 0)

EDIT : Размеры переменных:
X_test = 1 x 40
X_train = 9 x 40
X_test_reduced = 9 x n_comps

Как это должно действительно быть сделано?

python,machine-learning,scikit-learn,data-science,pca,

-1

Ответов: 1


3 принят

Ваша проблема заключается в том, что вы пытаетесь применить pca.inverse_transformк своим исходным данным. Цель этой функции - принимать в качестве входных данных основные компоненты и преобразовывать их обратно в данные. Здесь вы передаете вместо этого данные.

Из документов:

http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html#sklearn.decomposition.PCA.inverse_transform

Вы видите, что для pca.inverse_transformввода должно быть то, X : array-like, shape (n_samples, n_components)что в вашем случае есть, (1, 10)и именно поэтому вы получаете эту ошибку

Я предполагаю, что вы хотели бы сделать, это

X_test_inversed = pca.inverse_transform(X_test_reduced)
питон, машинное обучение, scikit учиться, данные науки, PCA,
Похожие вопросы