遥感&机器学习入门实战教程 | Sklearn 案例②:PCA + k-NN 分类与评估

遥感&机器学习入门实战教程 | Sklearn 案例③:PCA + SVM / 随机森林 对比与调参 本文介绍了基于支持向量机(SVM)和随机森林(RF)的高光谱影像分类方法,通过严格的无数据泄露预处理和交叉验证调参构建可靠基线模型。主要内容包括:使用仅训练集数据拟合StandardScaler和PCA降维(30维);采用GridSearchCV优化SVM(C/gamma)和RF(n_estimators/max_depth)超参数;输出完整评估指标和可视化结果(混淆矩阵、参数热力图、PCA累计方差曲线);最终实现整图预测并渲染分类结果。 阅读详情

延续第①篇:在“仅用训练像素拟合”的前提下,完成降维→分类→评估→整图预测的最小可用工作流,并将所有结果自动保存到时间戳文件夹。

🎯 本篇目标

  • 在无数据泄露前提下:仅用训练像素 fit StandardScaler 与 PCA
  • 使用 k-NN 完成分类,输出 OA / AA / Kappa 与 precision / recall / F1
  • 同时绘制并保存:计数版与归一化版混淆矩阵、PCA 累计解释方差曲线
  • 可选:整图像素级预测并保存可视化图与 .npz 结果包
  • 统一一个带时间戳的结果文件夹,便于归档复现实验

📂 数据说明

  • KSC.mat:高光谱数据立方体,形状 (H, W, B)
  • KSC_gt.mat:标签图,形状 (H, W),0 表示背景/无标签,1…C 为类别编号
  • 将二者放入同一目录,例如:
your_path/
  ├─ KSC.mat
  └─ KSC_gt.mat

只需在脚本里将 DATA_DIR = r"your_path" 改为你的真实路径,其余保持默认即可一键运行。

🧩 方法要点回顾(与第①篇保持一致)

  1. 分层划分:仅在有标签像素上进行训练/测试划分(stratify=labels)。
  2. 无泄露拟合:scaler.fit 和 pca.fit 只在训练像素上完成;随后对整图仅做 transform。
  3. 统一变换:整图 (H*W, B) 扁平化 → StandardScaler.transform → PCA.transform → 还原为 (H, W, PCA_DIM)。
  4. 评估:汇报 OA / AA / Kappa 与详细分类报告,同时保存原始与归一化混淆矩阵。
  5. 整图预测(可选):输出 1…C 的类别图,未标注区域可置 0 便于对照。

⚙️ 环境与依赖

  • Python 3.8+
  • numpy、scipy、scikit-learn、matplotlib
  • 终端安装示例:pip install numpy scipy scikit-learn matplotlib

💻 一键可跑完整脚本(自动保存所有结果)

复制粘贴即可运行。仅需修改第一段参数里的 DATA_DIR。

# -*- coding: utf-8 -*-
"""
Sklearn案例②-优化版:无泄露PCA + k-NN分类(结果直存)
数据:KSC / KSC_gt
1) 统一时间戳结果文件夹,所有图表/指标直接保存
2) 可视化优化:高DPI、紧凑布局、清晰坐标与标注
3) 混淆矩阵双版本:计数 & 归一化(百分比)
4) 指标保存:txt + csv;混淆矩阵保存:csv
5) 整图预测:可选,仅保存图片;同时保存预测数组(npz)
"""

import os
import time
import json
import numpy as np
import scipy.io as sio
import matplotlib
import matplotlib.pyplot as plt

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import (confusion_matrix, classification_report,
                             accuracy_score, cohen_kappa_score)

# ===== 可视化中文支持 =====
matplotlib.rcParams['font.family'] = 'SimHei'
matplotlib.rcParams['axes.unicode_minus'] = False

# ===== 参数区(按需修改)=====
DATA_DIR = r"your_path"      # ←←← 修改为你的数据路径
PCA_DIM = 30                  # PCA主成分数
TRAIN_RATIO = 0.3             # 训练占比(仅在有标签像素上分层抽样)
SEED = 42                     # 随机数种子
K = 5                         # k-NN 的 k
DO_FULLMAP = True             # 是否进行整图预测与保存
SAVE_ROOT = os.path.join(DATA_DIR, "knn_results")

# ===== 工具:统一保存路径 & 画图助手 =====
def make_save_dir(root):
    t = time.strftime("%Y%m%d_%H%M%S")
    d = os.path.join(root, f"run_{
     
     t}")
    os.makedirs(d, exist_ok=True)
    return d

def save_fig(path, dpi=220):
    plt.tight_layout()
    plt.savefig(path, dpi=dpi, bbox_inches="tight")
    plt.close()

def save_text(path, text):
    with open(path, "w", encoding="utf-8") as f:
        f.write(text)

# ===== 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)
h, w, b = X.shape

# 仅取非0标签像素的坐标与标签(转为0-based)
coords = np.argwhere(Y != 0)                    # (N,2)
labels = Y[coords[:, 0], coords[:, 1]] - 1      # (N,)
num_classes = labels.max() + 1

# ===== 结果目录 =====
SAVE_DIR = make_save_dir(SAVE_ROOT)
print
k-NN在GIS空间分析中的实战应用与避坑指南 k-Nearest Neighbors(k-NN)作为一种基于邻近性原理的非参数机器学习方法,其‘距离即关系’的核心思想与地理信息系统(GIS)的空间依赖性高度契合。它不假设数据分布、无需复杂训练,天然适配Tobler第一定律所描述的‘近处事物关联更强’这一地理本质。在空间分类、邻域关系建模、遥感影像解译等场景中,k-NN凭借强可解释性与工程友好性,成为GIS工程师快速验证空间假设、落地业务决策的关键工具。尤其在缺乏标注样本、需兼顾空间语义与计算效率的现实项目中,结合地理距离、网络距离与空间索引优化的k-N 阅读详情

相关推荐

PCA、自编码器与注意力机制的工程对齐实践指南

降维与表征学习是机器学习中连接数据预处理与深度模型的关键环节。从经典主成分分析(PCA)到线性自编码器,再到引入ReLU等非线性激活的扩展结构,其本质是在不同约束下对数据协方差结构进行低秩近似与重构。而当注意力机制被融入编码过程,它不再仅是权重替换,而是以数据自适应方式建模局部二阶统计关系,实现从全局线性投影到动态协方差对齐的范式跃迁。这一演进链路在图像重建、工业缺陷检测、时序异常识别等真实场景中,直接影响特征判别性、鲁棒性与边缘部署可行性。本文聚焦可复现的工程实践,涵盖正交约束实现、注意力协方差校准、重建

weixin_30247307的博客 498

非欧空间机器学习:识别数据本征几何与落地避坑指南

非欧空间机器学习并非高深数学技巧,而是面向图结构、流形分布和树状层级等真实数据几何特性的建模范式升级。其核心原理在于放弃欧氏空间中‘直线距离’与‘线性叠加’的强假设,转而采用球面、双曲或黎曼流形等更贴合数据本征形状的度量与运算方式。这种几何先验显著提升模型对层级保真、方向约束和长尾分布的建模能力,技术价值体现在医疗影像分割、物流路网推荐、知识图谱补全等工业场景中指标的实质性跃升。本文聚焦工程落地,系统解析如何通过聚类系数、LLE误差、层级深度比等可计算指标识别数据是否需非欧建模,并提供双曲GCN实现、黎曼优

abo1977的博客 416

特征提取:从数据降维到深度学习自动学习的核心方法与实践

特征提取是机器学习和数据科学中的基础技术,旨在从高维、冗余的原始数据中提炼出对目标任务最具代表性和判别性的信息。其核心原理在于通过降维、去噪和增强判别力,将数据映射到更有效的低维表示空间,从而提升模型的计算效率和泛化能力。这一过程的技术价值在于,它能够显著缓解维度灾难、过滤数据噪声,并揭示数据的内在结构,是构建稳健AI系统的关键环节。特征提取广泛应用于图像识别、自然语言处理、信号分析及三维点云处理等多个场景。随着深度学习的发展,自动特征学习(如CNN、BERT)已成为主流,但传统手工特征工程(如SIFT、T

weixin_30915951的博客 367

Normal Equation解析解原理与生产级鲁棒实现

Normal Equation是线性回归的闭式解,本质是将标签向量正交投影到特征列空间,直接求得最小二乘最优参数。其核心在于矩阵方程 $X^T X \theta = X^T y$ 的确定性求解,无需迭代、无随机性、结果唯一。技术价值在于提供可复现、低依赖、高精度的解析解,在小样本、边缘部署、合规审计等场景不可替代。但实际应用受制于 $X^T X$ 的病态性、秩亏与维度爆炸三大瓶颈,需结合岭回归、Cholesky/SVD分解及特征标准化等工程手段提升鲁棒性。本文聚焦Normal Equation在真实项目中的

weixin_30363509的博客 335

3.ESP32S3 AP 配网开发实战:HTTP 与 WebSocket 协议实现

本文介绍了基于ESP32S3的AP配网实现方案,通过HTTP协议提供配网网页,利用WebSocket实现双向通信。详细解析了HTTP和WebSocket协议特点,阐述了SPIFFS文件系统存储HTML网页的方法,包括分区表配置、CMakeLists设置和代码实现。工程采用模块化设计,包含WiFi管理、Web服务器、IO扩展等组件,支持手机浏览器直接配网。测试验证了从AP热点连接到路由器切换的全流程,并总结了SPIFFS操作、WebSocket通信等核心优化点。该方案无需专用APP,适合物联网设备快速部署场景

u011697185的专栏 957

Linux SMP系统多核启动机制详解

对称多处理(SMP)是现代操作系统支持多核并行计算的基础架构。其核心原理是通过引导处理器(BSP)初始化系统环境后,通过处理器间中断(IPI)机制唤醒应用处理器(AP)。在x86架构中,AP启动时处于实模式,需要特殊的trampoline代码完成保护模式切换和分页设置。这种设计既保证了系统初始化的正确性,又实现了多核并行处理的性能优势。理解SMP启动流程对优化系统启动速度和调试多核问题至关重要,特别是在云计算和嵌入式系统中,高效的SMP初始化能显著提升系统响应能力。本文以Linux内核为例,深入解析了从BS

weixin_35006125的博客 289

【Unity3D优化】优化内置shader的内存占用

在打AB包的过程中,并不会把这些Built-in的shader单独打包,并与材质球和预设体做好依赖,因此打AB包时,Unity会自行在材质球和预制体的AB包内每一个都包含进去用到的Built-in的Shader,而且运行时,由于加载的是不同的AB包,shader也是不同的实例,占用的也是多份内存。结合项目特点可以分析,由于项目里使用了大量的粒子特效,一些特殊的效果,会给特效师写定制的shader,但是这些常见的效果,特效师直接使用了Unity Built-in的shader。继续优化内存占用。

a310989583的专栏 2311

RoboMaster机甲大师赛备赛:如何用STM32+CAN总线精准控制四个大疆3508电机?

本文详细介绍了在RoboMaster机甲大师赛中,如何利用STM32和CAN总线技术精准控制四台大疆3508电机。从硬件架构设计、多电机ID分配、数据解析到同步控制算法,全面解析了构建高响应、低延迟底盘驱动系统的关键技术,助力参赛队伍提升机器人运动性能。

weixin_28684825的博客 132

【安装文档】TRex流量分析仪保姆级安装指南--基于VMware虚拟机(ubantu18.04@Intel 82545EM

如果之前添加了网卡,这里就可以看见有3个网卡(没添加的现在再加也行),* Active *为Linux内核正在使用的网卡,另外两张是未启用的网卡(注:未启用的网卡在终端中使用ifconfig命令是查不到的,需要先使用ip addr找出网卡,再激活,此时网卡会变为* Active *状态。

lingshengxiyou的博客 2130

【声纳技术】声呐时间反转镜技术:从被动聚焦到主动空间复用

时间反转镜技术以其独特的物理机制,为水声通信与声呐探测提供了一条绕过传统自适应均衡器的新路径。被动时间反转利用接收端的空间分集实现脉冲压缩,结构简洁、计算高效;主动时间反转则通过发射端预编码,将多径能量引导至目标位置,为多用户下行链路的空间复用奠定了物理基础。从Kuperman等人在海洋中首次验证声学时间反转镜,到TR-MIMO声呐的湖试验证,再到VTRM-CRK多用户通信系统的海试成功,该技术已从理论概念逐步走向工程实用。

u012133341的博客 55

深入剖析 Wenet 下 AISHELL-1 的 run.sh 脚本:从数据准备到模型训练

run.sh脚本用于处理 AISHELL-1 数据集的整个训练和测试流程。我们将逐步分析脚本中的每个部分,包括环境变量、参数设置、各个阶段的执行等。stage: 设置脚本的起始阶段(如数据准备)。stop_stage: 设置脚本的结束阶段。通过对 Wenet 下 AISHELL-1 的run.sh脚本的详细剖析,我们希望你能更好地理解每个步骤的功能及其背后的原理。此脚本不仅为模型训练提供了便利,也为用户自定义和扩展训练流程提供了基础。希望本教程能帮助你顺利完成语音识别项目!

帅小柏的博客 1631

Transformer大模型实战 文本摘要任务

Transformer, 文本摘要, 自然语言处理, 预训练模型, 序列到序列, BERT, BART, T5 1. 背景介绍 文本摘要任务是自然语言处理 (NLP) 领域的重要研究方向之一,旨在从长篇文本中提取关键信息,生成简洁、准确的摘要。随着深度学习技术的快速发展,基于 Tra

AI大模型应用之禅 1339

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 深度学习与遥感入门(七)|CNN vs CNN+形态学属性(MP):特征工程到底值不值?
下一篇: 遥感&机器学习入门实战教程 | Sklearn 案例③:PCA + SVM / 随机森林 对比与调参
遥感AI实战
博客等级 码龄9年 1002粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遥感AI实战

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值