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

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