sklearn的PCA反演,维度错误

sklearn's PCA inversion, dimension error

试图理解 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)

编辑: 变量的维度:
X_test = 1 x 40
X_train = 9 x 40
X_test_reduced = 9 x n_comps

这个实际上应该怎么做?

您的问题是您正在尝试将 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)