決策樹算法測試代碼 決策樹代碼實現

多條告白如次劇本只需引入一次
本教程引見了用來分門別類的計劃樹,即分門別類樹,囊括分門別類樹的構造,分門別類樹怎樣舉行猜測,運用scikit-learn結構分門別類樹,以及超參數的安排 。
本教程精細引見了計劃樹的處事道理
因為百般因為,計劃樹一種時髦的監視進修本領 。計劃樹的便宜囊括,它既不妨用來回歸,也可用來分門別類,容易證明而且不須要特性縮放 。它也有少許缺陷,比方簡單過擬合 。本教程引見了用來分門別類的計劃樹,也被稱為分門別類樹 。
除此除外,本教程還將涵蓋:
分門別類樹的構造(樹的深度,根節點,計劃節點,葉節點/結尾節點)分門別類樹怎樣舉行猜測怎樣經過Python中的scikit-learn結構計劃樹超參數安排與平常一律,本教程頂用到的代碼不妨在我的github(構造,猜測)中找到,咱們發端吧!
什么是分門別類樹?
分門別類和回歸樹(CART)是由Leo Breiman引入的,用一種于處置分門別類或回歸猜測建立模型題目的計劃樹算法 。正文只引見分門別類樹 。
分門別類樹
從實質上講,分門別類樹將分門別類變化為一系列題目 。下圖是在IRIS數據集(花草品種)上演練的一個分門別類樹 。根節點(棕色)和計劃節點(藍色)中包括了用來分割子節點的題目 。根節點即為最尖端的計劃節點 。換句話說,它即是你遍歷分門別類樹的開始 。葉子節點(綠色),也叫作結尾節點,它們不復分割成更多節點 。在葉節點處,經過普遍開票確定分門別類 。
將三個花草種類(IRIS數據集)逐一舉行分門別類的分門別類樹
怎樣運用分門別類樹
運用分門別類樹,要從根節點(棕色)發端,逐層遍歷整棵樹,直到達到葉節點(結尾節點) 。如次圖所示的分門別類樹,假如你有一朵花瓣長度為4.5cm的花,想對它舉行分門別類 。開始從根節點發端,先回復“花瓣長度(單元:cm)≤ 2.45嗎?”由于寬窄大于2.45,以是回復否 。而后加入下一個計劃節點,回復“花瓣長度(單元:cm)≤ 4.95嗎?” 。謎底為是,以是你不妨猜測這朵花的種類為變色鳶尾(versicolor) 。這即是一個大略的例子 。
分門別類樹怎樣成長(非數學版)
分門別類樹從數據國學到了一系列“即使…那么…”的題目,個中每個題目都波及到一個特性和一個分隔節點 。從下圖的限制樹(A)可看出,題目“花瓣長度(單元:cm)≤ 2.45”將數據鑒于某個值(本例中為2.45)分紅兩個局部 。這個數值叫作分隔點 。對分隔點而言,一個好的值(使得消息增值更大)可將類與類之間分擺脫 。查看下圖中的B局部可知,坐落分隔點左側的一切點都被歸為山鳶尾類(setosa),右側的一切點則被歸為變色鳶尾類(versicolor) 。
從圖中可看出,山鳶尾類(setosa)中一切的38個點都已被精確分門別類 。它是一個純節點 。分門別類樹在純節點上不會分割 。它不復爆發消息增值 。然而不純節點不妨進一步分割 。查看圖B的右側可知,很多點被缺點歸類到了變色鳶尾類(versicolor) 。換而言之,它包括了分屬于兩個各別類(setosa和versicolor)的點 。分門別類樹是個貪心算法,這表示著它會默許從來分割直到獲得純節點 。并且,該算法會為不純節點采用更好分隔點(咱們會鄙人節引見數學本領) 。
在上海圖書館中,樹的更大深度為2 。樹的深度是對一棵樹在舉行猜測之前可分割度數的襟懷 。樹可舉行屢次分割,直到樹的純度越來越高 。屢次反復此進程,會引導樹的深度越來越大,節點越來越多 。這會惹起對演練數據的過擬合 。倒霉的是,大普遍分門別類樹的實行都承諾遏制樹的更大深度,進而縮小過擬合 。換而言之,不妨經過樹立計劃樹的更大深度進而遏止樹的成長勝過某個一定深度 。可經過下圖直覺地領會更大深度 。
采用規則
本節回答了消息增值、基尼指數和熵是怎樣計劃出來的 。
在本節,你不妨領會到什么是分門別類樹中根節點/計劃節點的更好分隔點 。計劃樹在某個特性和對立應的分隔點長進行分割,進而按照給定的規則(本例中為基尼指數或熵)爆發更大的消息增值(IG) 。不妨將消息增值大略設置為:
IG = 分割前的消息(父) – 分割后的消息(子)
經過下圖的計劃樹,咱們不妨更明顯的領會父與子 。
下圖為更精確的消息增值公式 。
由于分門別類樹是二元分割,上述公式不妨簡化為以次公式 。
基尼指數和熵是兩個用來測量節點不純度的常用規則 。

推薦閱讀