高光谱图像分类-基于Python的多分类器对比与结果可视化

部署运行你感兴趣的模型镜像

一、实验目的

  1. 高光谱数据预处理:从3D数据转换为2D样本,去除无效标签,归一化处理

  2. 多分类器对比:学习KNN、SVM、随机森林等算法的实现与调参

  3. 性能评估:计算OA(总体准确率)、AA(平均准确率)和Kappa系数

  4. 结果可视化:绘制分类结果图并对比不同算法的表现

二、数据集与工具

  • 数据集:高光谱图像 dc_hx.mat(光谱数据)与 dc_gt.mat(标签数据)

     上述数据为公开数据,可自行替换

  • 工具:Python + Scikit-learn + Matplotlib

三、实验步骤与代码解析

1. 数据加载与预处理

关键代码

# 加载数据  
data = sio.loadmat('dc_hx.mat')['dc']  
labels = sio.loadmat('dc_gt.mat')['dc_gt']  

# 3D转2D(样本×特征)  
X = data.reshape(-1, data.shape[-1])  
y = labels.ravel()  

# 去除无标签样本(标签为0的像素)  
X = X[y > 0]  
y = y[y > 0]  

# 归一化  
scaler = StandardScaler()  
X = scaler.fit_transform(X)  

说明

  • 高光谱数据维度为 (宽×高×波段),需转换为 (样本数×特征数) 供模型训练

  • 归一化可消除不同波段量纲差异,提升模型收敛速度

2. 划分训练集与测试集

关键代码

X_train, X_test, y_train, y_test = train_test_split(  
    X, y, test_size=0.1, random_state=42, stratify=y  
)  

参数解析

  • test_size=0.1:10%数据作为测试集

  • stratify=y:保持训练集与测试集的类别分布一致

3. 多分类器训练与评估

支持的算法

  • K近邻(KNN)

  • 支持向量机(SVM,RBF核)

  • 随机森林(Random Forest)

  • 逻辑回归(Logistic Regression)

  • 决策树(Decision Tree)

  • 朴素贝叶斯(Naive Bayes)

评估指标

  • OA(Overall Accuracy):总体分类准确率

  • AA(Average Accuracy):各类别准确率的平均值

  • Kappa系数:衡量分类结果与随机分类的一致性

关键代码

for name, clf in classifiers.items():  
    clf.fit(X_train, y_train)  
    y_pred = clf.predict(X_test)  
    oa = accuracy_score(y_test, y_pred)  
    cm = confusion_matrix(y_test, y_pred)  
    aa = np.mean(np.diag(cm) / np.sum(cm, axis=1))  
    kappa = cohen_kappa_score(y_test, y_pred)  
    results[name] = {"OA": oa, "AA": aa, "Kappa": kappa}  

4. 全图分类与可视化

关键代码

# 全图分类  
image_2d = data.reshape(-1, data.shape[-1])  
image_2d = scaler.transform(image_2d)  
classified_image = clf.predict(image_2d)  
classified_image = classified_image.reshape(data.shape[:2])  

# 可视化  
plt.imshow(classified_image, cmap='jet')  
plt.title(f"{name} Classification")  

效果图示例

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

遥感AI实战

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

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

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

打赏作者

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

抵扣说明:

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

余额充值