決策樹(原理與實現) 知識整理

2021-09-11 18:30:59 字數 3808 閱讀 4412

決策樹演算法

減枝策略

**模組

預剪枝引數選擇

小結基本介紹

採用熵構造決策樹例項說明

然後根據資料統計,outlook取值分別為sunny、overcast、rainy的概率分別為:5

14\frac

145​

、4

14\frac

144​

和5

14\frac

145​

。總體熵值計算:514×

0.971+4

14×0+

514×0.971

=0.693

\frac\times 0.971+\frac\times 0+\frac\times 0.971=0.693

145​×0

.971

+144

​×0+

145​

×0.9

71=0

.693

此時,資訊增益gai

n(ou

tloo

k)=0.940

−0.693

=0.247

gain(outlook)=0.940-0.693=0.247

gain(o

utlo

ok)=

0.94

0−0.

693=

0.24

7,gain

(tem

pera

ture

)=0.029

gain(temperature)=0.029

gain(t

empe

ratu

re)=

0.02

9、gain

(hum

idit

y)=0.152

gain(humidity)=0.152

gain(h

umid

ity)

=0.1

52、g ai

n(wi

ndy)

=0.048

gain(windy)=0.048

gain(w

indy

)=0.

048。

我們找到了收益最大的特徵,我們在對分完類的節點繼續做同樣操作得到對於節點的分類特徵,以此類推完成整個決策樹。

from sklearn.datasets.california_housing import fetch_california_housing

housing = fetch_california_housing(

)print

(housing.descr)

選擇longitude和latitude這2個特徵研究決策樹

from sklearn import tree

dtr = tree.decisiontreeregressor(max_depth =2)

#tree模型引數

dtr.fit(housing.data[:,

[6,7

]],housing.target)

def

seetree

(dtr,feature_name,name_tree)

: dot_data = \

tree.export_graphviz(

dtr,

#需要自己設定樹引數

out_file=

none

, feature_names= feature_name,

#特徵名稱傳入需要修改

filled =

true

, impurity=

false

, rounded=

true

)import pydotplus

graph = pydotplus.graph_from_dot_data(dot_data)

graph.get_nodes()[

7].set_fillcolor(

"#fff2dd"

)from ipython.display import image

img = image(graph.create_png())

graph.write_png(name_tree)

name_tree =

'dtr_white_background.png'

seetree(dtr,housing.feature_names[6:

8],name_tree)

結果:

分割資料

train:test = 9:1

data_train,data_test,target_train,target_test = \

train_test_split(housing.data,housing.target,test_size=

0.1,random_state=42)

#隨機種子,使每次隨機的都是一致的

dtr = tree.decisiontreeregressor(random_state=42)

dtr.fit(data_train,target_train)

result = dtr.score(data_test,target_test)

print

(result)

執行結果:

0.637355881715626

from sklearn.ensemble import randomforestregressor

rfr = randomforestregressor(random_state=42)

rfr.fit(data_train,target_train)

result = rfr.score(data_test,target_test)

print

(result)

執行結果:

0.7910601348350835

可採用引數自動選擇方式,通過遍歷的方式列印出指定的幾個組合的離散情況,選取最優的預剪枝引數

from sklearn.model_selection import gridsearchcv

tree_param_grid =

grid = gridsearchcv(randomforestregressor(

),param_grid=tree_param_grid,cv =5)

#cv表示交叉驗證中train資料平分個數

grid.fit(data_train,target_train)

print

(grid.best_params_,grid.best_score_)

執行過程中一共有3×3

=93\times3=9

3×3=

9種引數設定方式,執行結果為:

0.8074294466986265

決策樹是一種十分常用的分類方法。可以用於模型**,他代表的是物件屬性與物件值之間的一種對映關係。

決策樹的優點及缺點:(from:wikipedia)

決策樹原理與python實現

決策樹 decision tree 是一種分類與回歸方法。在分類過程中可以理解為基於特徵對例項進行分類,也可以認為是if else的集合,也可以認為是定義在特徵空間與類空間上的條件概率分布。決策樹學習過程通常包括三個步驟 1 特徵選擇 2 決策樹的生成 3 決策樹的剪枝。決策樹常用演算法有id3 i...

決策樹原理

目錄 決策樹基本知識 id3 與c4.5 cart 應用 1.我們遇到的選擇都是根據以往的選擇判斷,如果把判斷背後的邏輯整理成乙個結構圖,會是乙個樹狀圖,就是決策樹的本質.2.決策樹的階段 構造與剪枝 構造 選擇什麼屬性作為結點 1 根節點 樹的頂端 2 內部節點 中間節點 3 葉節點 決策節點 剪...

決策樹01 決策樹的原理

此筆記根據 machine learning in action 和周志華教授的 機器學習 所作。缺點 可能會產生過度匹配問題。適用資料型別 數值型和標稱型 machine learning in action if so return 類標籤 else 尋找劃分資料集的最好特徵 劃分資料集 建立分...