PCA 在 3D numpy 数组上的实现
PCA implementation on 3D numpy array
我有一个大小为 2240*5*16
的特征集。 2240 是样本数,5 表示通道数,16 表示提取的统计特征数,例如均值、方差等。
现在,我想申请PCA
。但是,PCA
适用于二维数组。我应用了以下代码:
from sklearn.decomposition import PCA
pca = PCA(n_components=5)
pca.fit(features)
我收到以下错误。
ValueError: Found array with dim 3. Estimator expected <= 2.
不支持axis
参数。由于它仅适用于 2D,我如何在我的案例 (3D) 上使用它?如果我想将尺寸从 2240*5*16
减小到 2240*5*5
,有什么建议吗?
我会遍历每个通道并分别进行 PCA。
import numpy as np
from sklearn.decomposition import PCA
X = np.random.rand(1000, 5, 10)
X_transform = np.zeros((X.shape[0], 5, 5))
for i in range(X.shape[1]):
pca = PCA(n_components=5)
f = pca.fit_transform(X[:, i, :])
X_transform[:, i, :] = f
print((X_transform.shape))
我有一个大小为 2240*5*16
的特征集。 2240 是样本数,5 表示通道数,16 表示提取的统计特征数,例如均值、方差等。
现在,我想申请PCA
。但是,PCA
适用于二维数组。我应用了以下代码:
from sklearn.decomposition import PCA
pca = PCA(n_components=5)
pca.fit(features)
我收到以下错误。
ValueError: Found array with dim 3. Estimator expected <= 2.
不支持axis
参数。由于它仅适用于 2D,我如何在我的案例 (3D) 上使用它?如果我想将尺寸从 2240*5*16
减小到 2240*5*5
,有什么建议吗?
我会遍历每个通道并分别进行 PCA。
import numpy as np
from sklearn.decomposition import PCA
X = np.random.rand(1000, 5, 10)
X_transform = np.zeros((X.shape[0], 5, 5))
for i in range(X.shape[1]):
pca = PCA(n_components=5)
f = pca.fit_transform(X[:, i, :])
X_transform[:, i, :] = f
print((X_transform.shape))