SKlearn之決策樹

2021-10-07 06:51:22 字數 2608 閱讀 4575

決策樹是一種非引數的監督學習方法。

模組: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...