基于随机森林与支持向量机的高光谱图像分类(含python代码)

目录

一、背景

二、代码实现

三、项目代码


一、背景

基于深度学习的教程(卷积神经网络)详见:基于卷积神经网络的高光谱图像分类详细教程(含python代码)-CSDN博客

在高光谱图像分类领域,随机森林(Random Forest,RF)和支持向量机(Support Vector Machine, SVM)是两种广泛应用的机器学习算法。随机森林以其强大的集成学习能力,通过构建多个决策树并汇总它们的预测结果,能够有效地处理高维数据,捕捉到数据中的复杂模式。在高光谱图像中,每个像素点都包含了大量的光谱信息,随机森林能够利用这些信息构建出鲁棒的分类模型,尤其在处理非线性关系和噪声数据时表现出色。

相比之下,支持向量机通过寻找能够最大化不同类别之间间隔的超平面来进行分类,它在处理高维数据时同样表现出色,尤其是在数据线性可分或通过核技巧转换为线性可分的情况下。SVM的核函数能够将数据映射到更高维的空间,从而解决非线性分类问题。在高光谱图像分类中,SVM能够通过选择合适的核函数和参数,有效地识别出不同地物的光谱特征,实现高精度的分类。

两种算法各有优势,随机森林在处理大规模数据集和复杂特征交互时更为高效,而支持向量机在模型解释性和泛化能力方面表现突出。在高光谱图像分类任务中,选择哪种算法往往取决于数据的特性、分类目标以及计算资源的限制。实际应用中,研究人员常常会结合两种算法的优点,通过交叉验证和模型融合等技术,进一步提升分类性能。

二、代码实现

下面我们以IP数据集为例子进行展开讲解。

1、加载数据

将下载的数据加载进内存,便于后续处理

X = sio.loadmat('./data/Indian_pines.mat')['indian_pines']
y = sio.loadmat('./data/Indian_pines_gt.mat')['indian_pines_gt']

2、数据标准化

对数据标准化,方便模型学习特征

# 数据标准化
standard_scaler = StandardScaler()
data_standard_scaled = standard_scaler.fit_transform(X.reshape(-1, X.shape[2])).reshape(X.shape[0], X.shape[1], X.shape[2])

3、数据集的样本划分与标签分配

根据数据标签和数据,对其进行样本采样,并划分成训练集和验证集。这里以窗口为25的大小,训练集和测试集的占比分别为20%的训练,80%的验证。

print('\n... ... 数据预处理 ... ...')
mask = y>0
data, y = X[mask], y[mask]
print("获得的样本一共有:",len(data))
Xtrain, Xtest, ytrain, ytest = splitTrainTestSet(data, y, test_ratio)
print("训练集:",len(Xtrain),"验证集:",len(Xtest))

4、建立RF和SVM模型

# 建立模型并训练
model = RandomForestClassifier(n_estimators=500, random_state=42) # 随机森林
# model = SVC(kernel='rbf', C=500, random_state=42) # 支持向量机

需要哪个模型,即用该模型,取消注释即可,另一个注释。

5、训练和预测结果

model.fit(Xtrain, ytrain)# 训练模型
model.predict(Xtest)# 预测测试集

6、结果显示

classification, confusion, oa, each_acc, aa, kappa,names = reports(ytest, y_pred)
print(classification)
print("混淆矩阵\n",confusion)
print("kapap:", kappa)
print("aa:", aa)
print("oa:", oa)
print("训练时间:",train_time_1-train_time_0,"验证时间:",test_time_1-test_time_0)

以下结果是SVM的,RF的取消RF注释,并注释SVM重新运行即可:

三、项目代码

本项目的代码通过以下链接下载:基于随机森林与支持向量机的高光谱图像分类python代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/602849.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CAT Game Builder

CAT游戏生成器是在Unity中制作游戏的更简单、更快的方法。使用CAT的模块化条件、动作、触发器和集成游戏系统,您可以创建原型、演示或完整游戏,而无需额外编程。 CAT Game Builder是一个完全可扩展的框架,专为专业团队设计,但对初学者来说足够容易掌握。CAT Game Builder使…

2024蓝桥杯CTF writeUP--Theorem

密码方向的签到题,根据题目已知n、e和c,并且p和q是相邻的素数,可以考虑分解。 通过prevprime函数分解n,然后 RSA解密即可: from Crypto.Util.number import long_to_bytes import gmpy2 import libnumfrom sympy im…

大语言模型LLM入门篇

大模型席卷全球,彷佛得模型者得天下。对于IT行业来说,以后可能没有各种软件了,只有各种各样的智体(Agent)调用各种各样的API。在这种大势下,笔者也阅读了很多大模型相关的资料,和很多新手一样&a…

1.数据结构---顺序表

ArrayList 在new的时候并没有进行内存的分配 此时才进行内存分配 两个结论: 第一次Add的时候分配大小为10的内存 扩容是1.5倍扩容

如何修复显示器或笔记本电脑屏幕的黄色色调?这里提供几种方法

序言 如果你的笔记本电脑屏幕呈淡黄色,则可以启用夜灯功能。该问题也可能源于连接松散的显示电缆、损坏的显卡驱动程序或错误配置的显示器设置。以下是一些故障排除步骤,你可以尝试解决此问题。 禁用夜间模式 夜间模式功能旨在减少显示器的蓝色色调,使屏幕看起来更温暖,…

光伏设备数据交互模硬件接口要求

模组的弱电接口采用26(间距2.54mm)双排插针作为连接件,模组与电能表的硬件接口示意图如 图1所示(模组正视图方向),接口定义说明见表3。模组外接插座和插头采用凤凰端子结构,接口示意 图应符合附…

网贷大数据查询要怎么保证准确性?

相信现在不少人都听说过什么是网贷大数据,但还有很多人都会将它跟征信混为一谈,其实两者有本质上的区别,那网贷大数据查询要怎么保证准确性呢?本文将为大家总结几点,感兴趣的朋友不妨去看看。 想要保证网贷大数据查询的准确度&am…

差动绕组电流互感器过电压保护器ACTB

安科瑞薛瑶瑶18701709087/17343930412 电流互感器在运行中如果二次绕组开路或一次绕组流过异常电流,都会在二次侧产生数千伏甚至上万伏的过电压。这不仅会使CT和二次设备损坏,也严重威胁运行人员的生命安全,并造成重大经济损失。采用电流互感…

SpringBoot多数据源配置

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…

Git知识点总结

目录 1、版本控制 1.1什么是版本控制 1.2常见的版本控制工具 1.3版本控制分类 2、集中版本控制 SVN 3、分布式版本控制 Git 2、Git与SVN的主要区别 3、软件下载 安装:无脑下一步即可!安装完毕就可以使用了! 4、启动Git 4.1常用的Li…

CentOS 7 :虚拟机网络环境配置+ 安装gcc(新手进)

虚拟机安装完centos的系统却发现无法正常联网,咋破! 几个简单的步骤: 一、检查和设置虚拟机网络适配器 这里笔者使用的桥接模式,朋友们可以有不同的选项设置 二、查看宿主机的网络 以笔者的为例,宿主机采用wlan上网模…

在python中对Requests的理解

离上次写文章已经有小半个月了,但是: 没有动态的日子里,都在努力生活❤️;发表动态的日子里,都在热爱生活。🌹 目录 一、python集成工具的分类:1.解释Requests2. Requests3. Response对象的属性…

mvc 异步请求、异步连接、异步表单

》》》 利用Jquery ajax 》》》 mvc 异步表单 c# MVC 添加异步 jquery.unobtrusive-ajax.min.js 方法 具–>Nuget程序包管理器–>程序包管理器控制台 在控制台输入:PM>Install-Package Microsoft.jQuery.Unobtrusive.Ajax –version 3.0.0 回车执行即可在…

5分钟了解Flutter线程Isolate的运用以及Isolate到底是怎样执行的

5分钟了解Flutter线程Isolate的运用以及Isolate到底是什么 Isolate在dart是什么flutter线程内存隔离Isolate的使用第一种,无参数使用Isolate.run 第二种,有参数使用compute:使用Isolate.spawn Isolate与外面线程通讯Isolate以文件形式加载到内存运行 Iso…

led显示屏用什么胶水封装比较好?

led显示屏用什么胶水封装比较好? LED显示屏通常使用特定的胶水进行封装,以确保其稳定性和耐用性。常见的用于LED显示屏封装的胶水类型包括有机硅灌封胶、环氧树脂灌封胶等。 有机硅灌封胶具有优异的耐高温、防水、绝缘和密封性能,非常适合用…

使用MATLAB/Simulink点亮STM32开发板LED灯

使用MATLAB/Simulink点亮STM32开发板LED灯-笔记 一、STM32CubeMX新建工程二、Simulink 新建工程三、MDK导入生成的代码 一、STM32CubeMX新建工程 1. 打开 STM32CubeMX 软件,点击“新建工程”,选择中对应的型号 2. RCC 设置,选择 HSE(外部高…

python菜鸟级安装手册-上篇

python安装教程 电脑-右键-属性,确认系统类型和版本号,比如本案例系统是64位 win10 点击python官网,进行下载 适用于 Windows 的 Python 版本 |Python.org 选择第一个安装程序64位即可满足需要, 嵌入式程序包是压缩包版本&…

MySQL中的ON DUPLICATE KEY UPDATE和REPLACE

在 MySQL 中,ON DUPLICATE KEY UPDATE 和 REPLACE 语句都可以用来处理插入数据时主键或唯一键冲突的情况,但它们在处理冲突的方式上有所不同。它们有以下区别: 行为方式: ON DUPLICATE KEY UPDATE:当插入的数据行存在冲…

【竞技宝】欧冠:多特淘汰大巴黎进决赛,姆巴佩迷失

多特蒙德在本赛季欧冠半决赛第二回合较量中,跟大巴黎队狭路相逢。赛前,大部分球迷和媒体都看好坐拥姆巴佩的大巴黎队,可以靠着主场作战的优势,逆转多特蒙德晋级欧冠决赛。大巴黎队主场作战确实创造出不少得分机会,只可惜球队运气有些差,射门都打在了多特蒙德横梁上。反观多特蒙…

双翻斗雨量计学习

双翻斗雨量计用户手册(脉冲型) 本仪器由雨量计壳体、承雨口、漏斗、翻斗支撑、上漏斗雨量调节支架、上漏斗、汇集漏斗、计数翻斗雨量调节支架、计数翻斗、干簧管安装架、轴承螺钉、出水漏斗、腿部支架、干簧管、水平泡、调节支撑板、控制盒、调平装置、接…