遥感卫星影像光谱波段PCA降维遇维度错误求助
解决遥感数据PCA维度不匹配问题
sklearn的PCA要求输入是样本数×特征数的2维数组,你的遥感数据是3维(m行×n列的空间维度 + 103个光谱波段特征),直接传入会触发维度错误,解决步骤如下:
- 展平空间维度:将(m, n, 103)的数组转换为(m*n, 103),每个空间像素作为独立样本,103个波段作为样本特征
- 执行PCA降维:用展平后的2维数据拟合PCA并转换
- 恢复空间结构:将降维后的结果重新转回(m, n, 10)的3维格式,匹配原数据的空间布局
完整代码示例:
from sklearn.decomposition import PCA # 假设data是你的原始遥感数据,形状(m, n, 103) test = feature_scaling(data) m, n, _ = test.shape # 展平空间维度 reshaped_data = test.reshape(-1, 103) # 初始化PCA并执行降维 pca = PCA(n_components=10) pca_components = pca.fit_transform(reshaped_data) # 恢复空间形状 pca_result = pca_components.reshape(m, n, 10)
说明:
reshape(-1, 103)中的-1会让numpy自动计算m*n的总样本数,无需手动计算- 最终的
pca_result保持了原数据的空间结构,每个位置对应10个主成分特征
内容的提问来源于stack exchange,提问作者mankjo
相关产品推荐
相关产品推荐

