機器學習之決策樹在sklearn中的實現

CDA 資料分析師發表於2019-03-06


小夥伴們大家好~o( ̄▽ ̄)ブ,首先宣告一下,我的開發環境是Jupyter lab,所用的庫和版本大家參考:

Python 3.7.1(你的版本至少要3.4以上

Scikit-learn 0.20.0 (你的版本至少要0.20

Graphviz 0.8.4 (沒有畫不出決策樹哦,安裝程式碼conda install python-graphviz

Numpy 1.15.3, Pandas 0.23.4, Matplotlib 3.0.1, SciPy 1.1.0

用SKlearn 建立一棵決策樹
這裡採用的資料集是SKlearn中的紅酒資料集。

1 匯入需要的演算法庫和模組

from sklearn import tree #匯入tree模組
from sklearn.datasets import load_wine #匯入紅酒資料集
from sklearn.model_selection import train_test_split #匯入訓練集和測試集切分包

2 探索資料

wine = load_wine()
wine.data
wine.data.shape
wine.target
wine.target.shape

執行的結果是這樣子的:

data就是該資料集的特徵矩陣,從執行結果可以看出,該紅酒資料集一共有178條記錄,13個特徵。

特徵矩陣中有178條記錄,相對應的標籤Y就有178個資料。

如果wine是一張表,應該長這樣:

import pandas as pd
pd.concat([pd.DataFrame(wine.data),pd.DataFrame(wine.target)],axis=1)


這是資料集特徵列名和標籤分類

wine.feature_names
wine.target_names


3 分訓練集和測試集
這裡選取30%作為測試集。切分好之後,訓練集有124條資料,測試集有54條資料。

Xtrain, Xtest, Ytrain, Ytest = train_test_split(wine.data,wine.target,test_size=0.3)
Xtrain.shape
Xtest.shape


4 建立模型

clf = tree.DecisionTreeClassifier(criterion="entropy") #初始化樹模型
clf = clf.fit(Xtrain, Ytrain) #例項化訓練集
score = clf.score(Xtest, Ytest) #返回預測的準確度
​
score


5 畫出一棵樹吧

feature_name = ['酒精','蘋果酸','灰','灰的鹼性','鎂','總酚','類黃酮','非黃烷類酚類','花青素','顏色強度','色調','od280/od315稀釋葡萄酒','脯氨酸']
​
import graphviz
dot_data = tree.export_graphviz(clf
,out_file=None
,feature_names= feature_name
,class_names=["琴酒","雪莉","貝爾摩德"]
,filled=True
,rounded=True
)
graph = graphviz.Source(dot_data)
graph


6 探索決策樹

#特徵重要性
clf.feature_importances_
​
[*zip(feature_name,clf.feature_importances_)]


到現在為止,我們已經學會建立一棵完整的決策樹了。有興趣的話,動手建立一棵屬於自己的決策樹吧~

更多內容可移步:https://www.cda.cn/?seo-CSDN

相關文章