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
应用于您的原始数据。此函数的目的是将主成分作为输入并将其转换回数据。此处您将数据作为输入传递。
来自文档:
你看到 pca.inverse_transform
的输入应该是 X : array-like, shape (n_samples, n_components)
,在你的情况下是 (1, 10)
,这就是你得到这个错误的原因
我猜你想做的是
X_test_inversed = pca.inverse_transform(X_test_reduced)
试图理解 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
应用于您的原始数据。此函数的目的是将主成分作为输入并将其转换回数据。此处您将数据作为输入传递。
来自文档:
你看到 pca.inverse_transform
的输入应该是 X : array-like, shape (n_samples, n_components)
,在你的情况下是 (1, 10)
,这就是你得到这个错误的原因
我猜你想做的是
X_test_inversed = pca.inverse_transform(X_test_reduced)