【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.pswp.cn/news/207608.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207608.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207608.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

人工智能虛擬化環境

人工智能虛擬化環境通過模擬、管理和優化計算資源、數據資源和軟件環境,可以為人工智能算法和應用提供更加高效、靈活和可靠的運行平臺。本文將探討人工智能虛擬化環境的概念、技術和應用,并展望其在人工智能領域的未來發展。 首先,人工智能…

LVGL的學習

該LVGL基于LVGL的8.2版本 開關的控件Demo lv_obj_t* switch_obj lv_switch_create(lv_scr_act());lv_obj_set_size(switch_obj, 120, 60);lv_obj_align(switch_obj, LV_ALIGN_CENTER, 0, 0); 對象: 對于這一類對象,他們有共同的屬性的幾個特征。 創建部…

.NET使用分布式網絡爬蟲框架DotnetSpider快速開發爬蟲功能

前言 前段時間有同學在微信群里提問,要使用.NET開發一個簡單的爬蟲功能但是沒有做過無從下手。今天給大家推薦一個輕量、靈活、高性能、跨平臺的分布式網絡爬蟲框架(可以幫助 .NET 工程師快速的完成爬蟲的開發):DotnetSpider。 注…

Vue3組件使用問題

Vue3組件學習 文章目錄 Vue3組件學習一、Message 全局提示組件返回數據換行問題二、DatePicker 日期選擇框組件限制選定年份問題 一、Message 全局提示組件返回數據換行問題 問題&#xff1a;使用中發現僅僅通過寫入\n或<br/>&#xff0c;無法實現回車顯示的結果。 解決…

java中synchronized關鍵字的用法

在java編程中&#xff0c;經常需要用到同步&#xff0c;而用得最多的也許是synchronized關鍵字了&#xff0c;下面看看這個關鍵字的用法。因為synchronized關鍵字涉及到鎖的概念&#xff0c;所以先來了解一些相關的鎖知識。java的內置鎖&#xff1a;每個java對象都可以用做一個…

在Pytorch中使用Tensorboard可視化訓練過程

這篇是我對嗶哩嗶哩up主 霹靂吧啦Wz 的視頻的文字版學習筆記 感謝他對知識的分享 本節課我們來講一下如何在pytouch當中去使用我們的tensorboard 對我們的訓練過程進行一個可視化 左邊有一個visualizing models data and training with tensorboard 主要是這么一個教程 那么這里…

Flutter一直 Running Gradle task ‘assembleDebug‘

Flutter升級到3.13.7之后&#xff0c;一直Running Gradle task ‘assembleDebug’&#xff0c;之前運行還沒問題。 試了各種方法&#xff0c;比如添加阿里云鏡像&#xff0c;flutter\packages\flutter_tools\gradle目錄下修改build.gradle.kts文件&#xff0c;都不行。 參考大佬…

Termux+Hexo結合內網穿透輕松實現安卓手機搭建博客網站發布公網訪問

文章目錄 前言 1.安裝 Hexo2.安裝cpolar3.遠程訪問4.固定公網地址 前言 Hexo 是一個用 Nodejs 編寫的快速、簡潔且高效的博客框架。Hexo 使用 Markdown 解析文章&#xff0c;在幾秒內&#xff0c;即可利用靚麗的主題生成靜態網頁。 下面介紹在Termux中安裝個人hexo博客并結合…

ArkTS語言難嗎?鴻蒙指南

HarmonyOS的開發語言是ArkTS、JS(JavaScript)。 ArkTS簡介 ArkTS是HarmonyOS優選的主力應用開發語言。ArkTS圍繞應用開發在TypeScript&#xff08;簡稱TS&#xff09;生態基礎上做了進一步擴展&#xff0c;繼承了TS的所有特性&#xff0c;是TS的超集。因此&#xff0c;在學習…

骨傳導耳機品牌排行榜哪家強?盤點2024年骨傳導耳機排行榜前十

隨著科技的發展&#xff0c;耳機已經從單純的音樂播放工具&#xff0c;演變為我們生活中不可或缺的伴侶。其中&#xff0c;骨傳導耳機憑借其獨特的傳聲方式&#xff0c;逐漸受到越來越多消費者的青睞。骨傳導耳機通過骨頭直接傳遞聲音&#xff0c;避免了外耳道感染和中耳疾病&a…

Java中不同轉換符實現不同數據類型到字符串的轉換

String類的format()方法用于創建格式化的字符串以及連接多個字符串對象。熟悉C語言的同學應該記得C語言的sprintf()方法&#xff0c;兩者有類似之處。format()方法有兩種重載形式。 format(String format, Object... args) 新字符串使用本地語言環境&#xff0c;制定字符串格式…

(企業項目)SpringBoot實現雪花算法id注冊功能

以下是使用 Spring Boot 實現雪花算法的完整代碼。 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class SnowflakeGeneratorApplication {public static void mai…

Java 簡易版 TCP(一對一)聊天

客戶端 import java.io.*; import java.net.Socket; import java.util.Date; import javax.swing.*;public class MyClient {private JFrame jf;private JButton jBsend;private JTextArea jTAcontent;private JTextField jText;private JLabel JLcontent;private Date data;p…

刪除有序數組中的重復元素-練習雙指針編程最好的一道題-費元星

這是練習編成雙指針最好的一道題&#xff0c;邏輯簡單&#xff0c;優化簡單。 簡單理解&#xff1a;采用雙指針&#xff0c;總左邊進行開始&#xff0c;如果有新元素則將前面移動到后面。然后加一個剪枝操作&#xff0c;如果前后元素大于1&#xff0c;再移動。 給你一個 非嚴格…

檢驗科LIS系統源碼,臨床檢驗數據的采集、存貯、處理、提取、傳輸、匯總

檢驗科LIS系統源碼 臨床檢驗信息管理系統是醫院信息管理系統的重要組成部分&#xff0c;實現對LIS系統所涉及的人流、物流、財流進行綜合管理&#xff0c;對在臨床檢驗活動各階段中產生的數據進行采集、存貯、處理、提取、傳輸、匯總、加工生成各種信息&#xff0c;從而為醫院的…

freeswitch編譯mod_av支持webrtc MCU通話

系統環境 一、FS相關網站 二、第三方庫安裝 1.apt安裝 2.指定版本sofia-sip安裝 3.指定版本spandsp安裝 4.指定版本libks安裝 5.指定版本openssl安裝 三、指定版本FS安裝 1.CPPFLAGS配置 2.編譯器版本 3.FS配置編譯 四、FS&#xff0c;fs_cli運行&#xff0c;模塊加載 附錄 1.安…

word一鍵接受所有修訂并保留修訂痕跡

目的&#xff1a;讓word修訂插入的內容在接受修訂后保留痕跡。 文章目錄 目的&#xff1a;讓word修訂插入的內容在接受修訂后保留痕跡。1. 打開批注的word文件2. 同時按住&#xff1a;*AltF11*&#xff0c;然后右鍵&#xff1a;Normal -->插入--> 模塊3. 在出現的代碼框中…

代碼隨想錄算法訓練營第五十九天【單調棧part2】 | 503.下一個更大元素II、42. 接雨水

503.下一個更大元素II 題目鏈接 力扣&#xff08;LeetCode&#xff09;官網 - 全球極客摯愛的技術成長平臺 求解思路 重點在如何處理循環數組。 方案一&#xff1a; 直接將兩個數組拼接在一起&#xff0c;然后使用單調棧求下一個最大值。 方案二&#xff1a; 在遍歷的過…

elementUI中的 “this.$confirm“ 基本用法,“this.$confirm“ 調換 “確認“、“取消“ 按鈕的位置

文章目錄 前言具體操作總結 前言 elementUI中的 "this.$confirm" 基本用法&#xff0c;"this.$confirm" 調換 "確認"、"取消" 按鈕的位置 具體操作 基本用法 <script> this.$confirm(這是數據&#xff08;res.data&#xff0…

使用ASIRequest庫進行Objective-C網絡爬蟲示例

在Objective-C中&#xff0c;ASIHTTPRequest是一個非常受歡迎的庫&#xff0c;用于處理HTTP請求。它可用于下載網頁內容&#xff0c;處理API請求&#xff0c;甚至進行復雜的網絡交互。下面是一個簡單的示例&#xff0c;展示了如何使用ASIHTTPRequest庫來爬取網頁代碼。 首先&a…