決策樹是一種非引數的監督學習方法。
模組:sklearn.tree
sklearn建模的步驟:
1、選擇並建立模型 例:clf = tree.decisiontreeclassifier()
2、提供資料訓練模型 例:clf = clf.fit(x_train,y_train)
3、獲取需要的資訊 例:result = clf.score(x_test,y_test)
分類樹中的引數:
一、criterion
criterion是用來決定不純度的計算方法,不純度越低,擬合效果越好。
引數值:entropy(資訊熵)、gini(基尼係數)
二、random_state
隨機種子。在高維度時比較明顯。
三、splitter
控制隨機選項
引數值:best(優先選擇重要的特徵進行分支)、random(分支時更隨機,可以防止過擬合)
下面是一些用於剪枝的引數:
四、max_depth
剪枝,限制最大深度,在高緯度低樣本量時有效。可以防止過擬合。
五、min_samples_leaf
當分出的子節點小於min_sample_leafs就直接剪枝,不會往下分。當數值設定的過小時,會過擬合;過大的話,會阻止學習。
六、min_samples_split
乙個節點必須包含min_samples_split的訓練樣本才會被分支
七、max_features
限制分支時考慮的特徵個數,超過限制個數就會被捨棄
八、min_impurity_decrease
資訊增益是指子節點與父節點的資訊熵的差值。這個引數用於設定,當資訊增益小於閾值時,就不再分支。
以紅酒資料為例:
from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
由於資料集是乙個字典,可以通過 」.鍵「 的方式將資料列印出來:
資料的標籤可以分為0、1、2 。所以他是乙個三分類的資料。
接下來做乙個最簡單的分類:
#將資料集分為訓練集和測試集
x_train,x_test,y_train,y_test = train_test_split(wine.data,wine.target,test_size=0.3)
clf = tree.decisiontreeclassifier(criterion="entropy",random_state=0,splitter='best')
clf = clf.fit(x_train,y_train)
score = clf.score(x_test,y_test)
print(score)
這樣就得出了乙個90%正確率的模型
然後可以檢視哪乙個元素在決策樹中比較重要:
print([*zip(feature_name,clf.feature_importances_)])
就可以得到:
當我們嘗試了幾種剪枝方法,但效果不明顯時,可以做超引數的學習曲線。
例如,我們改變最大層數:
test =
for i in range(10):
clf = tree.decisiontreeclassifier(criterion="entropy",random_state=0,splitter='best',max_depth=i+1)
clf = clf.fit(x_train,y_train)
score = clf.score(x_test,y_test)
plt.plot(range(1,11),test,'r')
plt.legend()
plt.show()
就可以繪製出這樣的線段:
所以可以了解到當max_depth=2的時候是最好的。
接下來再介紹兩個重要的結果介面:
clf.predict(x_test) 他會返回測試樣本的結果
clf = tree.decisiontreeclassifier(criterion="entropy",random_state=0,splitter='best',max_depth=2)
clf = clf.fit(x_train,y_train)
score = clf.score(x_test,y_test)
print(x_test[0])
print(clf.predict(x_test[0].reshape(1,-1)))
由於sklearn不接受一維的特徵,所以用reshape(1,-1)來增維,也可以直接在外面加 [ ]
sklearn 決策樹例子 決策樹 規則挖掘應用
本次主要簡單介紹下決策樹在風控規則中的簡單應用,讓讀者快速入門。在後續的文章中,會逐一介紹決策樹的各種演算法原理,如資訊增益 id3演算法 c4.5演算法 c5.0演算法等,希望感興趣的朋友可以關注下。前言 決策樹是資料探勘中十分常用的分類方法,歸屬於機器學習中的監督學習演算法。監督學習就是給出一堆...
sklearn調包俠之決策樹演算法
之前我們詳細講解過決策樹的原理,詳細內容可以參考該鏈結 改進演算法 但使用資訊增益作為特徵選擇指標 id3演算法 容易造成過擬合。舉乙個簡單例子,每個類別如果都有乙個唯一id,通過id這個特徵就可以簡單分類,但這並不是有效的。為了解決這個問題,有了c4.5和cart演算法,其區別如下所示 資料匯入與...
python3 sklearn之決策樹
1,問題描述 小王的目的是通過下週天氣預報尋找什麼時候人們會運動,以適時調整雇員數量。因此首先他必須了解人們決定是否運動的原因。在2周時間內我們得到以下記錄 天氣狀況有晴,雲和雨 氣溫用華氏溫度表示 相對濕度用百分比 還有有無風。當然還有顧客是不是在這些日子是否運動。最終他得到了14列5行的資料 2...