決策樹演算法
減枝策略
**模組
預剪枝引數選擇
小結基本介紹
採用熵構造決策樹例項說明
然後根據資料統計,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 尋找劃分資料集的最好特徵 劃分資料集 建立分...