import graphviz
import pandas as pd
from sklearn import tree
from sklearn.datasets import load_wine # 匯入用來生成資料集的模組
from sklearn.model_selection import train_test_split # 匯入訓練集和測試集的類
import matplotlib.pyplot as plt
wine = load_wine(
)#取出資料
wine.data
#取出資料結構 輸出結果:(178, 13)
wine.data.shape
#取出標籤
wine.target
#pd.concat起到連線作用,將資料轉換成**形式
pd.concat(
[pd.dataframe(wine.data),pd.dataframe(wine.target)
],axis=1)
#取出特徵名
wine.feature_names
#取出標籤名
wine.target_names
#test_size=0.3 指30%做測試集 70%做訓練集
xtrain, xtest, ytrain, ytest = train_test_split(wine.data,wine.target,test_size=0.3)
#檢視xtrain結構
xtrain.shape
#檢視xtest結構
xtest.shape
#建模三部曲
test=
for i in range(10):
#1.例項化 criterion用來不純度計算,random_state用來設定分支中的隨機模式的引數,random_state、splitter控制隨機性
clf = tree.decisiontreeclassifier(criterion=
"entropy"
,random_state=30
,splitter=
"random"
,max_depth=i+1 #剪枝,最大深度為3
# ,min_samples_leaf=10 #剪枝,每個子節點必須包含10個樣本數
# ,min_samples_split=25 #剪枝,每個節點必須包含25個樣本數
)#2.讓資料進行訓練
clf = clf.fit(xtrain, ytrain)
#3.將測試集匯入,返回**的準確度
score = clf.score(xtest, ytest)
#通過迴圈10次,測試樹的最大深度與擬合程度的關係
plt.plot(range(1,11),test,color=
"red",label=
"max_depth"
)plt.legend(
)plt.show(
)#將原來英文特徵名轉化成中文特徵名表示
feature_name =
['酒精','蘋果酸','灰','灰的鹼性','鎂','總酚','類黃酮','非黃烷類酚類','花青素','顏色強度','色調','od280/od315稀釋葡萄酒','脯氨酸'
]#開始畫樹
dot_data = tree.export_graphviz(clf
,feature_names= feature_name
,class_names=
["琴酒","雪莉","貝爾摩德"
]#標籤名
,filled=true #是否填充顏色
,rounded=true #改變框的形狀
)#生成樹
graph = graphviz.source(dot_data)
#判斷哪些特徵很重要
clf.feature_importances_
#將特徵名與特徵重要度資訊連線起來看(更加直觀)——根節點對於決策樹的貢獻永遠都是最高的
[*zip(feature_name,clf.feature_importances_)
]#構建的樹對訓練集的擬合程度如何 過擬合指的是在訓練集表現得很好,在測試集上表現得很糟糕
score_train = clf.score(xtrain,ytrain)
#predict返回每個測試樣本的分類/回歸結果
clf.predict(xtest)
**b站「菜菜」教程 決策樹和CART決策樹
首先簡單介紹下決策樹 說到決策樹肯定離不開資訊熵 什麼是資訊熵 不要被這名字唬住,其實很簡單 乙個不太可能的時間居然發生了,要比乙個非常可能的時間發生提供更多的資訊。訊息說 今天早上太陽公升起 資訊量是很少的,以至於沒有必要傳送。但另一條訊息說 今天早上日食 資訊量就很豐富。概率越大資訊量就越少,與...
決策樹(二)決策樹回歸
回歸 決策樹也可以用於執行回歸任務。我們首先用sk learn的decisiontreeregressor類構造一顆回歸決策樹,並在乙個帶雜訊的二次方資料集上進行訓練,指定max depth 2 import numpy as np quadratic training set noise np.r...
決策樹01 決策樹的原理
此筆記根據 machine learning in action 和周志華教授的 機器學習 所作。缺點 可能會產生過度匹配問題。適用資料型別 數值型和標稱型 machine learning in action if so return 類標籤 else 尋找劃分資料集的最好特徵 劃分資料集 建立分...