如何将PCA降维应用于3D矩阵?

4

我想对一个3D矩阵(69,2640,7680)应用PCA降维。我有69个2D矩阵,每个矩阵的大小为(2640,7680)。我想将这些矩阵作为3D矩阵(69,2640,7680)应用PCA。我不知道如何操作。

任何帮助都将不胜感激。

代码

    data=np.load('Normal_windows.npy')
    pca = PCA(n_components=1000)
    pca.fit(data)
    data_pca = pca.transform(data)
    print("original shape:   ", data.shape) ##(69,2640,7680)
    print("transformed shape:", data_pca.shape) 
 
1个回答

5

如果我理解正确,PCA适用于特征,那么您有69个带有(2640,7680)特征的项目对吗?

如果是这种情况,那么你可以将最后两个维度展平(类似以下方式:

data_2d = np.array([features_2d.flatten() for features_2d in data])
pca = PCA(n_components=1000)
pca.fit(data_2d)
data_pca = pca.transform(data_2d)
print("original shape:   ", data_2d.shape) ##(69,2640*7680)
print("transformed shape:", data_pca.shape)

我得到了无效的语法 data_2d = np.array((features_2d.flatten() for features_2d in data]) - Eda
1
将“np.array((”替换为“np.array [”。 - TayTay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接