sklearn庫中的決策樹有兩種:分類決策樹、回歸決策樹。下面我們通過具體的案例學習如何使用這兩種決策樹。
分類決策樹
分類決策樹(decisiontreeclassifier)就是通過對訓練集的訓練,然後對測試集中的資料做出正確的分類。
這個**反映了銀行通過對乙個人的評判,然後決定是否給予其貸款
序號年齡
有工作有自己的房子
信貸情況類別0
青年否否一般
否1青年否
否好否2
青年是否好
是3青年是
是一般是4
青年否否一般
否5中年否
否一般否6
中年否否好
否7中年是
是好是8
中年否是非常好是9
中年否是非常好是10
老年否是非常好是11
老年否是好
是12老年是
否好是13
老年是否非常好是14
老年否否一般
否我們通過對這個資料集的訓練,然後**乙個人是否會得到銀行的貸款
from sklearn.tree import decisiontreeclassifier
import graphviz
from sklearn import tree
''' function : 使用決策樹分類器訓練訓練集,然後使用測試集測試訓練效果
author : lemon
''''''
重要方法:
1、fit(x,y)
x : 訓練集資料
y : 訓練集資料對應的目標值(類標籤),為整數或字串
2、predict(x)
x : 測試集樣本
return : **的類或**值
3、predict_proba(x)
x : 測試集樣本
return : **為每個類別的概率
4、decision_path(x)
x : 測試集樣本
return : 返回樹中決策路徑,非0元素表示樣本通過節點
'''# 載入資料集
defloaddataset()
: data =[[
0,0,
0,0]
,[0,
0,0,
1],[
0,1,
0,1]
,[0,
1,1,
0],[
0,0,
0,0]
,[1,
0,0,
0],[
1,0,
0,1]
,[1,
1,1,
1],[
1,0,
1,2]
,[1,
0,1,
2],[
2,0,
1,2]
,[2,
0,1,
1],[
2,1,
0,1]
,[2,
1,0,
2],[
2,0,
0,0]
,]target =
['no'
,'no'
,'yes'
,'yes'
,'no'
,'no'
,'no'
,'yes'
,'yes'
,'yes'
,'yes'
,'yes'
,'yes'
,'yes'
,'no'
]return data,target
if __name__ ==
'__main__'
: data,target = loaddataset(
) clf = decisiontreeclassifier(
)# 根據訓練集構建決策分類器
clf.fit(data,target)
# 需要**的變數
test_data =[[
0,1,
0,1]
,[1,
1,1,
1],[
0,0,
0,0]
]# 匯出決策樹的操作
dot_data = tree.export_graphviz(clf)
graph = graphviz.source(dot_data)
graph.render(
'tree'
)# result **結果
result = clf.predict(test_data)
print
('**結果'
)print
(result)
# chance **為每個類別的概率
chance = clf.predict_proba(test_data)
print
('**為每個類別的概率'
)print
(chance)
**結果
**結果
['yes'
'yes'
'no'
]**為每個類別的概率[[
0.1.
][0.
1.][
1.0.
]]
回歸決策樹
回歸決策樹(decisiontreeregressor)是通過對資料的擬合,然後**測試資料的值。
下面我們通過對boston資料使用決策樹模型,**新資料測值。
from sklearn.datasets import load_boston
from sklearn.tree import decisiontreeregressor
import time
import numpy as np
''' function :
author :
''''''
重要方法:
1、fit(x,y)
x : 訓練集樣本
y : 目標值(實數)
2、predict(x)
x : 測試集樣本
return : 基於x的**值
3、score(x,y)
x : 測試樣本
y : x對應的真值
'''# 載入資料
boston = load_boston(
)# 將資料分為訓練集和測試集兩部分
train_data = boston.data[
:400:]
train_target = boston.target[
:400:]
test_data = boston.data[
400::]
test_target = boston.target[
400::]
regressor = decisiontreeregressor(random_state=0)
print
(f": begin training..."
)regressor.fit(train_data,train_target)
# result **的值
print
(f": begin testing..."
)result = regressor.predict(test_data)
mse =
((np.array(
[result]
)- np.array(test_target))**
2)/len
(test_target)
print
('mse = '
+str
(mse.
sum().
round(3
)))
**結果
我們將資料分為了兩部分:訓練集和測試集,然後觀察模型對測試集的**情況:
2019-02-20 11:41:22: begin training...
2019-02-20 11:41:22: begin testing...
mse = 45.055
得到模型的均方誤差mse=45.055,由於資料集不大,我們也沒有進行特徵選擇,所以均方誤差有點大。這裡我們僅僅是展示一下如何使用決策樹模型進行回歸,相應的特徵選擇還需要根據具體資料集來分析。 SKlearn之決策樹
決策樹是一種非引數的監督學習方法。模組 sklearn.tree sklearn建模的步驟 1 選擇並建立模型 例 clf tree.decisiontreeclassifier 2 提供資料訓練模型 例 clf clf.fit x train,y train 3 獲取需要的資訊 例 result ...
sklearn 決策樹例子 決策樹 規則挖掘應用
本次主要簡單介紹下決策樹在風控規則中的簡單應用,讓讀者快速入門。在後續的文章中,會逐一介紹決策樹的各種演算法原理,如資訊增益 id3演算法 c4.5演算法 c5.0演算法等,希望感興趣的朋友可以關注下。前言 決策樹是資料探勘中十分常用的分類方法,歸屬於機器學習中的監督學習演算法。監督學習就是給出一堆...
sklearn 決策樹學習筆記
遍歷眾多特徵,計算每一次分類後的資訊增益,選取分類後熵值最小的特徵作為當前分類節點 防止過擬合,當每個資料都是乙個葉結點的時候,分類正確率是100 但是樹過於龐大。from sklearn.datasets.california housing import fetch california hou...