首先先看iris資料集
sepal.length——花萼長度 sepal.width——花萼寬度
petal.length——花瓣長度 petal.width——花瓣寬度
通過上述4中屬性可以**花卉屬於setosa,versicolour,virginica 三個種類中的哪一類
決策樹 by cart
決策樹有挺多種,這裡講下cart
cart的執行過程是這樣的:
用特徵值k和下限tk二分子集
不斷二分,直到到達最大深度或者劃分不能再減少不純度為止
這一下sklearn都會自動幫我們完成,我們呼叫就行了
如何避免過擬合問題
減小最大深度等等
乙個tip:
min_* 的調大
max_*的調小
就是decisiontreeclassifier裡面的引數,具體看文件_(:з」∠)_
損失函式的比較
sklearn提供了兩種損失函式gini和entropy
gini是通過計算每個節點的不純度,具體公式如下↓
\(j(k,t_k) = \frac}g_ + \frac}g_\)
entropy在這裡就不再贅述了
sklearn預設的是呼叫gini,因為gini的速度會快點,而且兩者最後的效果是差不多的,真要比的話entropy產生的決策樹會更平衡點
接下來我們來看**
from sklearn.datasets import load_iris
from sklearn.tree import decisiontreeclassifier
import numpy as np
iris = load_iris()
x = iris.data[:, 2:] # petal length and width
y = iris.target #目標值
tree_clf = decisiontreeclassifier(max_depth=2, random_state=42) #定義最大深度和確定隨機種子
tree_clf.fit(x, y) #訓練
print(tree_clf.predict_proba([[5, 1.5]])) #**返回的是可能性
#以上**執行後將會產生如下輸出 [[ 0. 0.90740741 0.09259259]]
#分別代表屬於每一種類別可能的概率
#也可以用如下**
print(tree_clf.predict[[5,1.5]]) #直接輸出屬於哪一類
看下上面生成的決策樹的樣子
注: valuse是它劃分到各個類的數量
samples 指的是當前節點的資料個數
從左表橙色的點可以看出,gini=0意味著劃分到了相同的類別裡面
ps.以上**及來自《hands-on machine learning with scikit-learn》一書
喜歡要不支援下(:з」∠)
決策樹和CART決策樹
首先簡單介紹下決策樹 說到決策樹肯定離不開資訊熵 什麼是資訊熵 不要被這名字唬住,其實很簡單 乙個不太可能的時間居然發生了,要比乙個非常可能的時間發生提供更多的資訊。訊息說 今天早上太陽公升起 資訊量是很少的,以至於沒有必要傳送。但另一條訊息說 今天早上日食 資訊量就很豐富。概率越大資訊量就越少,與...
決策樹之CART
本系列分享由三篇部落格組成,建議從前往後閱讀學習。決策樹之id3 決策樹之c4.5 決策樹之cart 前面我們講到了決策樹演算法id3,和c4.5。c4.5是在id3的基礎上發展而來的,c4.5還存在的缺陷有 1 c4.5不能解決回歸的問題。2 c4.5需要進行多個對數計算,效率比較低。3 對於離散...
決策樹(CART演算法)
分類問題中,假設有k個類,樣本點屬於第k類的概率為p kp k pk 則概率分布的基尼指數定義為 其中p kp k pk 表示選中的樣本屬於k kk類別的概率,則這個樣本被分錯的概率為 1 pk 1 p k 1 pk 對於給定的樣本集合d,其基尼指數為 這裡的c kc k ck 是d中屬於第k類的樣...