用Sklearn畫一顆決策樹


小伙伴們大家好~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_)]

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM