這里采用的數(shù)據(jù)集是SKlearn中的紅酒數(shù)據(jù)集鸟顺。
1 導(dǎo)入需要的算法庫和模塊
from sklearn import tree #導(dǎo)入tree模塊
from sklearn.datasets import load_wine #導(dǎo)入紅酒數(shù)據(jù)集
from sklearn.model_selection import train_test_split #導(dǎo)入訓(xùn)練集和測試集切分包
2 探索數(shù)據(jù)
wine = load_wine()
wine.data
wine.data.shape
wine.target
wine.target.shape
運(yùn)行的結(jié)果是這樣子的:
data就是該數(shù)據(jù)集的特征矩陣信不,從運(yùn)行結(jié)果可以看出蛉腌,該紅酒數(shù)據(jù)集一共有178條記錄偿荷,13個(gè)特征檐春。
特征矩陣中有178條記錄顽聂,相對(duì)應(yīng)的標(biāo)簽Y就有178個(gè)數(shù)據(jù)肥惭。
如果wine是一張表盯仪,應(yīng)該長這樣:
import pandas as pd
pd.concat([pd.DataFrame(wine.data),pd.DataFrame(wine.target)],axis=1)
這是數(shù)據(jù)集特征列名和標(biāo)簽分類
wine.feature_names
wine.target_names
3 分訓(xùn)練集和測試集
這里選取30%作為測試集。切分好之后蜜葱,訓(xùn)練集有124條數(shù)據(jù)全景,測試集有54條數(shù)據(jù)。
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) #實(shí)例化訓(xùn)練集
score = clf.score(Xtest, Ytest) #返回預(yù)測的準(zhǔn)確度
score
5 畫出一棵樹吧
feature_name = ['酒精','蘋果酸','灰','灰的堿性','鎂','總酚','類黃酮','非黃烷類酚類','花青素','顏色強(qiáng)度','色調(diào)','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_)]
到現(xiàn)在為止牵囤,我們已經(jīng)學(xué)會(huì)建立一棵完整的決策樹了爸黄。有興趣的話,動(dòng)手建立一棵屬于自己的決策樹吧~