当前位置: 首页 > news >正文

遥感机器学习入门实战教程|Sklearn案例⑩:降维与分解(decomposition 模块)

在高光谱、时序遥感数据里,特征维度往往非常高。如何压缩维度、提取主要信息,是建模前的重要一步。sklearn.decomposition 模块为我们提供了一系列常见的降维与分解方法,本篇就带大家快速入门。

另外,往期内容和数据链接如下:

遥感&机器学习入门实战教程 数据集分享

🧩 decomposition 模块常见方法

  • PCA(主成分分析):最经典,线性正交投影,保留最大方差方向。

  • IncrementalPCA:适合大数据分批训练。

  • KernelPCA:非线性降维,用核函数映射到高维再PCA。

  • ICA(独立成分分析):把信号分解为统计独立分量,常用于混合源分离。

  • NMF(非负矩阵分解):分解为非负基和系数,适合光谱分解与端元分析。

  • DictionaryLearning / SparseCoding:用稀疏字典表示数据。

💻 示例代码:多方法降维对比

这里我们用 KSC 数据集,取有标签像素,演示 PCA / ICA / NMF 三种方法,把数据降到 2 维并可视化对比。

# -*- coding: utf-8 -*-
"""
Sklearn案例⑩:decomposition 降维方法对比
演示 PCA / ICA / NMF 在高光谱数据上的效果
"""import os, numpy as np, scipy.io as sio, matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from sklearn.decomposition import PCA, FastICA, NMF# ===== 参数 =====
DATA_DIR = "your_path"   # ←修改为你的数据路径
SEED = 42# ===== 1. 数据加载 =====
X = sio.loadmat(os.path.join(DATA_DIR,"KSC.mat"))["KSC"].astype(np.float32)
Y = sio.loadmat(os.path.join(DATA_DIR,"KSC_gt.mat"))["KSC_gt"].astype(int)
coords = np.argwhere(Y!=0)
X_all  = X[coords[:,0], coords[:,1]]
y_all  = Y[coords[:,0], coords[:,1]]-1# 为保证非负分解可用,先缩放到 [0,1]
scaler = MinMaxScaler().fit(X_all)
X_all  = scaler.transform(X_all)# ===== 2. 定义三种分解方法 =====
models = {"PCA": PCA(n_components=2, random_state=SEED),"ICA": FastICA(n_components=2, random_state=SEED, max_iter=1000),"NMF": NMF(n_components=2, init="nndsvda", random_state=SEED, max_iter=1000)
}# ===== 3. 拟合与变换 =====
results = {}
for name, model in models.items():X_trans = model.fit_transform(X_all)results[name] = X_trans# ===== 4. 可视化对比 =====
plt.figure(figsize=(12,4))
for i,(name,Xt) in enumerate(results.items(),1):plt.subplot(1,3,i)plt.scatter(Xt[:,0], Xt[:,1], c=y_all, s=6, cmap="tab20")plt.title(name)plt.axis("off")
plt.suptitle("Sklearn.decomposition 多方法降维对比", fontsize=14)
plt.tight_layout(rect=[0,0,1,0.95])
plt.show()

🔍 结果解读

  • PCA:分布最紧凑,能看到明显的“类团块”,常用作基线。

  • ICA:强调统计独立性,分布更分散,可能更利于区分类别。

  • NMF:保持非负,常用于“端元-丰度”分析,更贴合光谱混合模型。

图片

✅ 小结

  • sklearn.decomposition 提供了多种降维/分解方法,不仅仅是 PCA。

  • 在遥感场景里:

    • PCA 是首选基线;

    • ICA 常用于源分离(如大气/地物成分);

    • NMF 常见于光谱解混。

  • 方法没有绝对优劣,需要结合任务特点选择。

http://www.dtcms.com/a/348961.html

相关文章:

  • [e3nn] 等变神经网络 | 线性层o3.Linear | 非线性nn.Gate
  • 动态规划--编译距离
  • AI代码生成器全面评测:六个月、500小时测试揭示最强开发助手
  • Redis 高可用篇
  • 51单片机-实现定时器模块教程
  • GaussDB 数据库架构师修炼(十八) SQL引擎-统计信息
  • 用 WideSearch 思路打造「零幻觉、全覆盖」的多 Agent 信息收集器
  • SRE 系列(四)| MTTI 与 On-Call:高效故障响应之道
  • C++标准库算法:从零基础到精通
  • Go语言 Hello World 实例
  • 数据标注的质检环节有多少种
  • 单表查询-分析函数的应用
  • 智能体之推理引擎(3)
  • 记一次使用 C++ 实现多种扑克牌逻辑
  • ptrade `get_fundamentals` - 获取财务数据
  • 58 C++ 现代C++编程艺术7-模板友元
  • VC2022连接mysql
  • 微服务-21.网关路由-路由属性
  • 2025年KBS SCI1区TOP,新颖奖励与ε-贪婪衰减Q-learning算法+局部移动机器人路径规划,深度解析+性能实测
  • AI基础学习周报十
  • AI产品经理面试宝典第74天:技术边界与商业闭环的面试问题与答法
  • Trip Footprint_旅行分享功能模块技术架构天气模块技术架构
  • COSMIC智能化编写工具:革命性提升软件文档生成效率
  • 【文献阅读】Land degradation drivers of anthropogenic sand and dust storms
  • docker安装及常用命令
  • 卷王问卷考试系统—测试报告
  • 不只是关键词匹配:AI如何像人类一样‘听懂‘你在说什么
  • 【电路笔记 通信】混频器+混频器芯片(FSK/ASK收发器IC超外插接收器IC)+外差接收机 超外差接收机
  • Html相关
  • hot100 之104-二叉树的最大深度(递归+二叉树)