影像資訊提取之——基於專家知識的決策樹分類
可以將多源資料用於影像分類當中,這就是專家知識的決策樹分類器,本專題以ENVI中Decision Tree為例來敘述這一分類器。
本專題包括以下內容:
- 專家知識分類器概述
- 知識(規則)定義
- ENVI中Decision Tree的使用
概述
基於知識的決策樹分類是基於遙感影像資料及其他空間資料,通過專家經驗總結、簡單的數學統計和歸納方法等,獲得分類規則並進行遙感分類。分類規則易於理解,分類過程也符合人的認知過程,最大的特點是利用的多源資料。
如圖1所示,影像+DEM就能區分緩坡和陡坡的植被資訊,如果新增其他資料,如區域圖、道路圖土地利用圖等,就能進一步劃分出那些是自然生長的植被,那些是公園植被。
圖1專家知識決策樹分類器說明圖
專家知識決策樹分類的步驟大體上可分為四步:知識(規則)定義、規則輸入、決策樹執行和分類後處理。
(1)知識(規則)定義
規則的定義是講知識用數學語言表達的過程,可以通過一些演算法獲取,也可以通過經驗總結獲得。
(2)規則輸入
將分類規則錄入分類器中,不同的平臺有著不同規則錄入介面。
(3)決策樹執行
執行分類器或者是演算法程式。
(4)分類後處理
這步驟與監督/非監督分類的分類後處理類似。
知識(規則)定義
分類規則獲取的途徑比較靈活,如從經驗中獲得,坡度小於20度,就認為是緩坡,等等。也可以從樣本中利用演算法來獲取,這裡要講述的就是C4.5演算法。
利用C4.5
(1)多元檔案的的構建:遙感資料經過幾何校正、輻射校正處理後,進行波段運算,得到一些植被指數,連同影像一起輸入空間資料庫;其他空間資料經過向量化、格式轉換、地理配準,組成一個或多個多波段檔案。
(2)提取樣本,構建樣本庫:在遙感影象處理軟體或者GIS軟體支援下,選取合適的圖層,採用計算機自動選點、人工解譯影像選點等方法採集樣本。
(3)分類規則挖掘與評價:在樣本庫的基礎上採用適當的資料探勘方法挖掘分類規則,後基於評價樣本集對分類規則進行評價,並對分類規則做出適當的調整和篩選。這裡就是C4.5演算法。
4.5演算法的基本思路基於資訊熵來“修枝剪葉”,基本思路如下:
從樹的根節點處的所有訓練樣本D0開始,離散化連續條件屬性。計算增益比率,取GainRatio(C0)的最大值作為劃分點V0,將樣本分為兩個部分D11和D12。對屬性C0的每一個值產生一個分支,分支屬性值的相應樣本子集被移到新生成的子節點上,如果得到的樣本都屬於同一個類,那麼直接得到葉子結點。相應地將此方法應用於每個子節點上,直到節點的所有樣本都分割槽到某個類中。到達決策樹的葉節點的每條路徑表示一條分類規則,利用葉列表及指向父結點的指標就可以生成規則表。
圖2規則挖掘基本思路
演算法描述如下:
演算法:從空間資料集(多波段檔案)中挖掘分類規則
輸入:訓練樣本
輸出:分類規則表
方法:
一、讀取資料集名字
二、讀取所有的訓練樣本
A、讀取屬性資訊C、原始類E、樣本值A,並將樣本劃分為訓練樣本(2/3)和評價樣本(1/3)。
B、屬性資訊C可以是連續(DISCRETE)或離散(CONTINUOUS)的,分別將屬性註上這兩種標記;若屬性是DISCERTE,讀取其可能取得值,並都儲存在一個列表中;每一個屬性都有一個標記,一個給定的屬性編號及初始化的取值列表均儲存於一個屬性的資料結構中,並將資料結構儲存在一個雜湊表中。
C、原始類E當作一個附加屬性資訊儲存在屬性列表中。
D、以增量方式讀取每一個樣本A,將所有的樣本儲存在一個表中,每一行代表一個樣本。
三、利用資料集構建樹
A、離散化連續條件屬性C DISCRETE,獲得的分割點集T(t1,t2……)作為條件屬性C的新的取值。
B、分別計算所有條件屬性的增益比率GainRatio(C),取增益比率值最大的條件屬性作為樹的劃分節點,其值或範圍作為劃分值V(v1,v2……)來生成樹的分枝。
C、判斷該層與每一個等價子集的原始類類別是否一致。若一致,生成葉子結點。否則,繼續計算增益比率GainRatio(C)和選擇條件屬性C,得到樹的節點和劃分值V,直至所有的樣本已分類完畢。
四、測試生成樹
將測試樣本C′帶入樹中,當某一測試樣本的分類預測錯誤時,記錄分類錯誤的計數,並將測試樣本新增到訓練樣本中,轉向步驟三,重新構建樹。否則,輸出分類樹
五、抽取分類規則
到達樹的葉節點的每條路徑表示一條分類規則從樹中抽取分類規則,列印規則和分類的詳細資訊
C4.5網上有原始碼下載,vc和c++版本都能獲得。
Decision Tree的使用
以ENVI5.0為操作平臺,ENVI classic、ENVI4.8及以下版本類似。
一、規則獲取
選取Landsat TM5影像和這個地區對應的DEM資料,影像和DEM經過了精確配準。
規則如下描述:
Class1(朝北緩坡植被):NDVI>0.3, slope<20, aspect<90 and aspect>270
Class2(非朝北緩坡植被):NDVI>0.3, slope<20, 90<=aspect<=270
Class3(陡坡植被):NDVI>0.3, slope>=20,
Class4(水體):NDVI<=0.3, 0
Class5(裸地):NDVI<=0.3, b4>=20
Class6(無資料區,背景): NDVI<=0.3, b4=0
也可以按照二叉樹描述方式:第一層,將影像分為兩類,NDVI大於0.3,NDVI小於或等於0.3;第二層,NDVI高的,分為坡度大於或等於20度和坡度小於20度。以此往下劃分。
二、輸入決策樹規則
啟動Toolbox/Classification/Decision Tree/New Decision Tree開啟決策樹分類工具,如圖3所示,預設顯示了一個節點。
圖3 Decision Tree介面
首先我們按照NDVI的大小劃分第一個節點,單擊Node1,跳出圖4對話方塊,Name為NDVI>0.3,在Expression中填寫:{ndvi} gt 0.3。
圖4新增規則表示式
點選OK後,會提示你給{ndvi}指定一個數據源,如圖5所示,點選第一列中的變數,在對話方塊中選擇相應的資料來源,這樣就完成第一層節點規則輸入。
圖5指定資料來源
Expression中的表示式是有變數和運算子(包括數學函式)組成,支援的運算子如表1所示
表示式 |
部分可用函式 |
基本運算子 |
+、-、*、/ |
三角函式 |
正弦Sin(x)、餘弦cos(x)、正切tan(x) 反正弦Asin(x)、反餘弦acos(x)、反正切atan(x) 雙曲線正弦Sinh(x)、雙曲線餘弦cosh(x)、雙曲線正切tanh(x) |
關係/邏輯 |
小於LT、小於等於LE、等於EQ、不等於NE、大於等於GE、大於GT and、or、not、XOR 最大值(>)、最小值(<) |
其他符號 |
指數(^)、自然指數exp 自然對數對數alog(x) 以10為底的對數alog10(x) 整形取整——round(x)、ceil(x) 平方根(sqrt)、絕對值(adb) |
表1運算子
ENVI決策樹分類器中的變數是指一個波段的資料或作用於資料的一個特定函式。變數名必須包含在大括號中,即{變數名};或者命名為bx,x代表資料,比如哪一個波段。如果變數被賦值為多波段檔案,變數名必須包含一個寫在方括號中的下標,表示波段數,比如{pc[2]}表示主成分分析的第一主成分。支援特定變數名如表2,也可以通過IDL自行編寫函式。
變數 |
作用 |
slope |
計算坡度 |
aspect |
計算坡向 |
ndvi |
計算歸一化植被指數 |
Tascap [n] |
穗帽變換,n表示獲取的是哪一分量。 |
pc [n] |
主成分分析,n表示獲取的是哪一分量。 |
lpc [n] |
區域性主成分分析,n表示獲取的是哪一分量。 |
mnf [n] |
最小噪聲變換,n表示獲取的是哪一分量。 |
Lmnf[n] |
區域性最小噪聲變換,n表示獲取的是哪一分量。 |
Stdev [n] |
波段n的標準差 |
lStdev [n] |
波段n的區域性標準差 |
Mean [n] |
波段n的平均值 |
lMean [n] |
波段n的區域性平均值 |
Min [n]、max [n] |
波段n的最大、最小值 |
lMin [n]、lmax [n] |
波段n的區域性最大、最小值 |
表2變量表達式
第一層節點根據NDVI的值劃分為植被和非植被,如果不需要進一步分類的話,這個影像就會被分成兩類:class0和class1。
對NDVI大於0.3,也就是class1,根據坡度劃分成緩坡植被和陡坡植被。在class1圖示上右鍵,選擇Add Children。單擊節點識別符號,開啟節點屬性視窗,Name為Slope<20,在Expression中填寫:{Slope} lt 20。
同樣的方法,將所有規則輸入,末節點圖示右鍵Edit Properties,可以設定分類結果的名稱和顏色,最後結果如圖6所示。
圖6規則輸入結果圖
三、執行決策樹
選擇Options->Execute,執行決策樹,跳出圖7所示對話方塊,選擇輸出結果的投影引數、重取樣方法、空間裁剪範圍(如需要)、輸出路徑,點選OK之後,得到如圖8所示結果。在決策樹執行過程中,會以不同顏色標示執行的過程。
圖7輸出結果
圖8決策樹執行結果
回到決策樹視窗,在工作空白處點選右鍵,選擇Zoom In,可以看到每一個節點或者類別有相應的統計結果(以畫素和百分比表示)。如果修改了某一節點或者類別的屬性,可以左鍵單擊節點或者末端類別圖示,選擇Execute,重新執行你修改部分的決策樹。
圖9執行決策樹後的效果
分類後處理和其他計算機分類類似的過程。
基於CART的決策樹規則自動提取
決策樹分類主要的工作是獲取規則,下面介紹使用CART演算法獲取規則,下圖是總體流程。
圖10總體技術流程圖
在獲取規則過程中,由於計算量較大,我們推薦裁剪一部分較典型區域作為實驗區獲取規則,之後將這個規則應用於整個影象區域。
一、準備資料
將資料進行預處理工作,如幾何校正、多源資料的配準、工程區裁剪等,之後構建多元資料集。如這裡的資料集由藍、綠、紅、近紅外四個波段、NDVI、ISODATA非監督分類結果、DEM組成。通過Layerstacking工具將7個波段組合成一個多波段檔案,並裁剪一部分典型區域。
二、獲取規則
這裡使用CART演算法獲取規則,首先安裝ENVI下的CART擴充套件工具,下載地址:,將解壓後的檔案拷貝到ENVI安裝目錄下的Save_Add資料夾內,重新啟動ENVI。
注:為了方便選擇ROI樣本,這裡在ENVI classic下操作。
在實驗區影像中選擇一定數量的訓練樣本,利用訓練樣本獲取專家知識規則。
(1)在Display中顯示裁剪的實驗區影像,在Image視窗中單擊Overlay->Region
of Interest。在ROI Tool面板中,分別選擇5個型別的訓練樣本(如下圖),訓練樣本的可分離度在1.8
可以將多源資料用於影像分類當中,這就是專家知識的決策樹分類器,本專題以ENVI中Decision
Tree為例來敘述這一分類器。
本專題包括以下內容:
專家知識分類器概述
知識(規則)定義
ENVI中Decision
Tree的使用
概述
基於知識的決策樹分
基於光譜的影像的分類可分為監督與非監督分類,這類分類方法適合於中低解析度的資料,根據其原理有基於傳統統計分析的、基於神經網路的、基於模式識別的等。
本專題以ENVI的監督與非監督分類的實際操作為例,介紹這兩種分類方法的流程和相關知識。有以下內容組成:
監督分類
非
在上一篇(https://blog.csdn.net/baymax_007/article/details/82748544)中,利用邏輯迴歸實現資訊多分類。本文在之前基礎上,又引入決策樹、隨機森林、多層感知分類器、xgboost和樸素貝葉斯分類演算法,並對驗證集和測試集分類 現象 info n) 指標 ssi 直觀 learn 保持 afr
使用python3 學習了決策樹分類器的api
涉及到 特征的提取,數據類型保留,分類類型抽取出來新的類型
需要網上下載數據集,我把他們下載到了本地,
可以到我的git下載代碼和數據集: https
1、決策樹介紹
決策樹簡單的理解為if-then的集合,其優點主要有分類速度快、可讀性等。決策樹的生成主要可分為三個步驟:特徵的選擇、決策樹的生成、決策樹的剪枝。
1.1特徵選擇
對於結點的選擇,總得需要一個計算方法來實現,這個方法的目標是優先選擇分類能力強的特徵,這樣才提高
print(__doc__)
import numpy as np import matplotlib.pyplot as plt
from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClas
decisoin tree:
# -*- coding: utf-8 -*-
import sklearn
from sklearn import tree
import matplotlib.pyplot as plt
from sklearn.model_selection impor show(10,truncate=false)
+-------+------+----+------------+--------+-------------+---------+----------+------+
|affairs|gender|age |yearsmarried|children|re -- 分類 測試數據 label dict 決策 序號 特征 span
def classfify(mytree,testdata,labels):
# print(‘mytree:{},testdata:{},labels:{}‘.format(mytree 一、任務基礎
匯入所需要的庫
import matplotlib.pyplot as plt
import pandas as pd
%matplotlib inline
載入sklearn內建資料集 ,檢視資料描述
from sklearn.datasets.californ 回歸 element row tps 樣本 pan 類別 表示 splay 決策樹分類
1,概念
2,決策樹算法
2.1,特征選擇:
熵:值越大,不確定性因素越大;條件熵:條件對結果的影響不確定性;信息增益;信息增益比
分類
分類(Classification)任務就是通過學習獲得一個目標函式(Target Function)f, 將每個屬性集x對映到一個預先定義好的類標號y。
分類任務的輸入資料是記錄的集合,每條記錄也稱為例項或者樣例。用元組(X,y)表示,其中,X 是屬性集合,y是一個特殊的
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeClassifier
iris_
# -*- coding: cp936 -*-
#決策樹分類器
my_data=[['slashdot','USA','yes',18,'None'],['google','France','yes',23,'Premium'],
['digg','USA
決策樹演算法是分類演算法中最常用的演算法之一。決策樹是一種類似流程圖的樹形結構,可以處理高維資料,直觀易理解,且準確率較高,因此應用廣泛。本篇小博就決策樹的若干演算法:ID3演算法、C4.5演算法以及分類迴歸樹(CART)、C5.0進行對比介紹,並對比C4.5與C5.0處理
code:import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
from sklearn import tree
from sklearn
關於決策樹理論方面的介紹,李航的《統計機器學習》第五章有很好的講解。
傳統的ID3和C4.5一般用於分類問題,其中ID3使用資訊增益進行特徵選擇,即遞迴的選擇分類能力最強的特徵對資料進行分割,C4.5唯一不同的是使用資訊增益比進行特徵選擇。
特徵A對訓練資料D的資訊增益g(
%% 使用ID3決策樹演算法預測銷量高低
clc;
clear ;
%% 資料預處理
disp('正在進行資料預處理...');
[matrix,attributes_label,attributes] = id3_preprocess();
%% 構造ID3決策樹,其
分類
什麼是分類?舉個例子,銀行貸款員需要分析資料,以便搞清楚哪些是貸款申請者是值得信賴的。通訊公司也希望能分清楚哪些客戶容易接受某一套餐,從而定向營銷。資料分類一般又包括學習階段(構建分類器)和分類階段(使用模型預測給定資料的類標號)。
決策樹分類器
Iris Data Set是很經典的一個數據集,在很多地方都能看到,一般用於教學分類演算法。這個資料集在UCI Machine Learning Repository裡可以找到(還是下載量排第一的資料喲)。這個資料集裡面,每個資料都包含4個值(sepal len 相關推薦
影像資訊提取之——基於專家知識的決策樹分類
影像資訊提取之—— 監督與非監督分類
基於邏輯迴歸/決策樹/隨機森林/多層感知分類器/xgboost/樸素貝葉斯分類的資訊多分類效能對比
機器學習之路: python 決策樹分類 預測泰坦尼克號乘客是否幸存
基於sklearn的決策樹演算法
sklearn的快速使用之六(決策樹分類)
sklearn學習筆記之決策樹分類和線性迴歸
Spark2 機器學習之決策樹分類Decision tree classifier
機器學習之--使用決策樹分類測試數據(遞歸)
機器學習之使用sklearn構造決策樹模型
統計學習方法五 決策樹分類
R語言學習(三)——決策樹分類
決策樹分類鳶尾花資料集
決策樹分類器演算法實現
機器學習演算法(二)——決策樹分類演算法及R語言實現方法
決策樹分類鳶尾花資料demo
使用R完成決策樹分類
決策樹分類——matlab程式
決策樹分類器(ID3、C4.5 Java實現)
[Java][機器學習]用決策樹分類演算法對Iris花資料集進行處理