【GEE笔记】随机森林特征重要性计算并排序

随机森林是一种基于多个决策树的集成学习方法,可以用于分类和回归问题。在gee中可以使用ee.Classifier.smileRandomForest()函数来创建一个随机森林分类器,并用它来对影像进行分类。

随机森林分类器有一个重要的属性,就是可以计算每个特征(或者说波段)的重要性,即该特征对分类结果的贡献程度。特征重要性可以帮助我们选择最有效的特征,从而提高分类的准确性和效率。

在本文中,将使用gee平台上的哨兵二号影像(COPERNICUS/S2)作为数据源,对区域内的土地覆盖进行分类,并计算并排序每个波段的重要性。具体分类过程可见:
【GEE笔记】在线分类流程,标注样本点、分类和精度评价

代码如下:

var geometry = ee.Geometry.Polygon(
        [[[121.81940156260009, 40.92383488850036],
          [121.81940156260009, 40.73887826797227],
          [121.99998933115478, 40.73887826797227],
          [121.99998933115478, 40.92383488850036]]], null, false)

// 定义年份和波段列表
var year=2020
var bandlist=['B2','B3','B4','B8','B11','B12']

// 定义时间范围
var start = ee.Date(year+'-4-1');
var finish = ee.Date(year+'-7-1');

// 从gee平台上加载哨兵二号影像,并按照时间、空间和云量进行过滤
var dataset = ee.ImageCollection('COPERNICUS/S2')
                  .filterDate(start, finish)
                  .filterBounds(geometry)
                  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
                  
// 从影像集中选择需要的波段                  
dataset=dataset.select(bandlist);            
// 定义RGB波段和显示范围
var rgbVis = {
  min: 0.0,
  max: 3000,
  bands: ['B4', 'B3', 'B2'],
};

// 将地图中心定位
Map.centerObject(geometry)
// 打印影像集的信息
print(dataset)

// 对影像集进行中值合成,并裁剪到西城区范围
var image=dataset.median().clip(geometry)
// 在地图上显示合成影像
Map.addLayer(image,rgbVis)

// 加载样本数据,包括淡水、海水、建盆、农田、芦苇、建筑、潭土和草地等八个类别
var sample=danshui.merge(haishui).merge(jianpeng).merge(nongtian).merge(luwie).merge(jianzhu)
.merge(tantu).merge(caodi)

// 为样本数据添加一个随机数列,用于划分训练集和测试集
var withRandom = sample.randomColumn('random');
// 定义训练集和测试集的比例,大约70%的样本用于训练,30%的样本用于测试
var split = 0.7;  
var trainingPartition2 = withRandom.filter(ee.Filter.lt('random', split));
var testingPartition = withRandom.filter(ee.Filter.gte('random', split));

// 从合成影像中提取训练集的像素值,包括波段值和类别标签
var trainingPartition=image.sampleRegions({
    collection: trainingPartition2,
    scale:10,
    properties: ['Map'],
    })
// 创建一个随机森林分类器,使用100棵树,并用训练集进行训练
var classifier = ee.Classifier.smileRandomForest(100).train({
  features: trainingPartition,
  classProperty:'Map',
  // inputProperties :['B4', 'B3', 'B2']
});
// 从分类器的explain()方法中获取特征重要性的字典
var dict = ee.Dictionary(classifier.explain().get('importance'));
// 打印特征重要性的字典
print('Explain:',dict);
// 将特征重要性的字典转换为数组,并按照重要性的值进行排序
var tttt=ee.Dictionary(classifier.explain().get('importance')).toArray().toList();
print('重要性排序:',ee.Dictionary(classifier.explain().get('importance')).keys().sort(tttt))

// 使用ui.Chart.feature.byProperty()函数,将特征重要性的字典绘制成柱状图,并显示在控制台中
var variable_importance = ee.Feature(null, ee.Dictionary(dict2).get('importance'));
var chart =
ui.Chart.feature.byProperty(variable_importance)
.setChartType('ColumnChart')
.setOptions({
title: 'Random Forest Variable Importance',
legend: {position: 'none'},
hAxis: {title: 'Bands'},
vAxis: {title: 'Importance'}
});
 
print(chart);

在这里插入图片描述

从输出结果可以看到,B8波段(近红外波段)的重要性最高,达到了410.5263331047649,说明该波段对土地覆盖分类的影响最大。

通过计算并排序特征重要性,可以对影像进行特征选择,即只保留最重要的波段,从而减少数据的维度,提高分类的速度和准确性。当然,特征选择的效果还需要通过分类精度评估来验证,这是下一步的工作。

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

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

相关文章

【沁恒蓝牙MESH】CH582串口中断内存溢出导致MCU频繁重启

本文主要记录了【沁恒蓝牙mesh】CH582串口中断内存溢出导致MCU频繁重启 由于开发疏忽,导致的数组内存溢出,是入门嵌入式开发经常忽视的错误,用以记录,共勉!! 目录 1. 遇到问题描述以及解决1.1 问题一&#…

案例063:基于微信小程序的传染病防控宣传系统

文末获取源码 开发语言:Java 框架:springboot JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder …

都2023年了还在搜索Maven是什么?赶紧来学习(超详细一文搞懂)

文章目录 前言1. 到底什么是 Maven2. 为什么要学Maven3. 创建一个 Maven 项目4. Maven 核心功能4.1 项目构建4.2 依赖管理 4. Maven 仓库4.1 本地仓库4.2 中央仓库4.3 私有服务器, 也称为私服 5. Maven 设置国内源5.1 配置当前项目setting5.2 设置新项目的setting 总结 前言 我…

N4694D 电子校准件(ECal),67 GHz,1.85 mm,2 端口

N4694D 电子校准件 Keysight N4694D 微波电子校准件(ECal)可以快速、轻松和准确地对是德科技矢量网络分析仪进行校准。 N4694D 是一款精密型 2 端口电子校准件,支持 1.85 mm 连接器和高达 67 GHz 的频率范围。 用户可以在阴头-阴头、阳头-阳头…

低代码开发:激发创新还是程序员的末日?

前言 近年来,低代码开发备受关注,引发了市场上的热议。这一新兴技术被标榜为具备低门槛、高效率和易集成等特性,然而,却引发了一系列的争论。究竟低代码是伪需求还是行业创新的助推器?它是否可能让程序员失业&#xf…

电脑报错msvcr100.dll丢失?竟有5种解决方法,全面解析

在计算机的使用过程中,我们可能会遇到各种问题,其中之一就是msvcr100.dll丢失。这个问题主要出现在基于Microsoft Visual Studio 2010开发的程序上,可能导致程序无法正常运行。本文将详细介绍msvcr100.dll是什么,以及如何解决其丢…

强制使用新版,Win11里隐藏的Win10要没了

系统这玩意和游戏一样,在许多人眼中「上一代」永远是最好的一代。 除了尝鲜测试阶段必然出现许多 Bug ,另一个原因大概是好不容易建立的使用习惯又被打破。 Win10 到 11 的换代即是如此,就算不提稳定性,也还有一些让人至今难以适…

企业贷款行业如何获客?

贷款行业是指提供贷款服务的行业,包括各种类型的金融机构,如银行、信用社、贷款公司、保险公司等。这些机构通过向个人或企业提供贷款服务,满足其资金需求。 主要分为个人贷款和企业贷款。个人贷款指银行或其他金融机构向符合贷款条件的自然…

MS5228/5248/5268:2.7V 到 5.5V、 12/14/16Bit、内置基准、八通道数模转换器

MS5228/MS5248/MS5268 是一款 12/14/16bit 八通道输出的电压型 DAC ,内部集成上电复位电路、可选内部基准、接口采用四线串口模式, 最高工作频率可以到 40MHz ,可以兼容 SPI 、 QSPI 、 DSP 接口和 Microwire 串口。输出接到一个 …

电商早报 | 12月8日|母婴电商宝贝格子北京总部已人去楼空

国家邮政局:预计11月快递量同比增长30%,业务收入增长27% 12月7日消息,国家邮政局发布2023年11月中国快递发展指数报告。经测算,2023年11月中国快递发展指数为406.4,同比提升20%。其中发展规模指数、服务质量指数、发展…

JPA对数据库修改注意点

同一事务中获取不到修改数据 spring-boot-starter-parent版本2.7.12 Dao Query(value "select * from inventory_list where id in (?1) order by id desc",nativeQuery true) List<InventoryListEntity> getByIds(List<Integer> idList);Modifyin…

二层交换原理

二层交换设备工作在OSI模型的第二层&#xff0c;即数据链路层&#xff0c;它对数据包的转发是建立在MAC&#xff08;Media Access Control &#xff09;地址基础之上的。二层交换设备不同的接口发送和接收数据独立&#xff0c;各接口属于不同的冲突域&#xff0c;因此有效地隔离…

编译 Android gradle-4.6-all.zip 报错问题记录

编译 Android gradle-4.6-all.zip 报错问题记录 方法一&#xff1a;替换资源&#xff1a;方法二&#xff1a;修改源方法三&#xff1a;修改版本 编译时候无法下载 gradle-4.6-all Downloading https://services.gradle.org/distributions/gradle-4.6-all.zip 方法一&#xf…

采用轨到轨输出设计 LTC6363HMS8-2、LTC6363HMS8-1、LTC6363HRD、LTC6363IDCB差分放大器I

产品详情 LTC6363 系列包括四个全差分、低功耗、低噪声放大器&#xff0c;具有经优化的轨到轨输出以驱动 SAR ADC。LTC6363 是一款独立的差分放大器&#xff0c;通常使用四个外部电阻设置其增益。LTC6363-0.5、LTC6363-1 和 LTC6363-2 都有内部匹配电阻&#xff0c;可分别创建…

Spark---DataFrame存储、Spark UDF函数、UDAF函数

四、DataFrame存储Spark UDF函数 1、储存DataFrame 1&#xff09;、将DataFrame存储为parquet文件 2&#xff09;、将DataFrame存储到JDBC数据库 3&#xff09;、将DataFrame存储到Hive表 2、UDF&#xff1a;用户自定义函数 可以自定义类实现UDFX接口 java&#xff1a; …

Nginx+Promtail+Loki+Grafana 升级ELK强大工具

最近客户有个新需求,就是想查看网站的访问情况,由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的页面,咱也做不到 成熟的日志解决方案,那就是ELK,还有现在比较火的Loki,(当然还有很多其…

MQTT_fx的使用——连接ONENET

这里写目录标题 前言1、ONENET云平台设备创建1.1、注册并登录ONENET云平台1.2、创建产品1.3、创建物模型1.4、创建设备 2、利用MQTT.fx连接ONENET订阅和发布消息2.1、MQTT.fx和OneNET-token计算工具的安装2.2、使用MQTT.fx连接云平台2.3、发布消息到云平台2.4、订阅云平台信息 …

C语言-文件

文件 1. 简介 文件用来存放程序、文档、音频、视频数据、图片等数据的。 文件就是存放在磁盘上的&#xff0c;一些数据的集合。 在 windows 下可以通过写字板或记事本打开文本文件对文件进行编辑保存。写字板和记事本是微软程序员写的程序&#xff0c;对文件进行打开、显示…

uc_14_IP地址_套接字_字节序转换

1 计算机网络 计算机网络&#xff0c;是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统、网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统。 网络协议是一种特…

Redis基础系列-持久化

Redis基础系列-持久化 文章目录 Redis基础系列-持久化1. 什么是持久化2. 为什么要持久化3. 持久化的两种方式3.1 持久化方式1&#xff1a;RDB(redis默认持久化方式)3.11 配置步骤-自动触发3.12 配置步骤-手动触发3.12 优点3.13 缺点3.14 检查和修复RDB快照文件3.15 哪些情况会触…
最新文章