用決策樹 CART 解決iris分類問題

2022-06-14 19:18:15 字數 1656 閱讀 3400

首先先看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類的樣...