python - 3D numpy 数组上的 PCA 实现
问题描述
我有一个 size 的功能集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))
推荐阅读
- flutter - Flutter & Dart:管理从 Isolate 中进行的计算获得的数据的正确方法是什么?
- apache-kafka - Kafka Connect Sink Partition by recordField 在 Ticks 中
- r - 有没有办法在R studio中下载excel文件
- python - 如何检查 Pytorch 闪电中的验证指标?
- r - 使用 group_by 时出错,而不是在减去两个日期列 R 时使用排列时出错
- jenkins - 如何使 Jenkins 的工作不会因构建后操作失败而失败?
- apache-spark - 如何使 Spark 流按顺序执行
- asp.net-core - Blazor 服务器 - 如何从客户端计算机启动 IE 浏览器
- c# - 将 PDF 转换为图像字节数组以保存到数据库
- postgresql - 如何知道 Postgres 哈希分区中将使用哪个分区?