決策樹算法

image.png

決策樹可以用于分類夹抗,也可以用于回歸

image.png
image.png
image.png
image.png

衡量標(biāo)準(zhǔn)去選擇哪個(gè)作為根節(jié)點(diǎn)

image.png

熵值越大杏愤,越混亂珊楼;越小越穩(wěn)定


image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

sklearn案例

%matplotlib inline

import matplotlib.pyplot as plt

import pandas as pd
from sklearn.datasets.california_housing import fetch_california_housing
housing = fetch_california_housing()
print(housing.DESCR)
downloading Cal. housing from http://www.dcc.fc.up.pt/~ltorgo/Regression/cal_housing.tgz to C:\Users\user\scikit_learn_data
California housing dataset.

The original database is available from StatLib

    http://lib.stat.cmu.edu/

The data contains 20,640 observations on 9 variables.

This dataset contains the average house value as target variable
and the following input variables (features): average income,
housing average age, average rooms, average bedrooms, population,
average occupation, latitude, and longitude in that order.

References
----------

Pace, R. Kelley and Ronald Barry, Sparse Spatial Autoregressions,
Statistics and Probability Letters, 33 (1997) 291-297.
housing.data.shape
(20640, 8)
housing.data[0]
array([   8.3252    ,   41.        ,    6.98412698,    1.02380952,
        322.        ,    2.55555556,   37.88      , -122.23      ])
from sklearn import tree
dtr = tree.DecisionTreeRegressor(max_depth = 2)
dtr.fit(housing.data[:, [6, 7]], housing.target)
DecisionTreeRegressor(criterion='mse', max_depth=2, max_features=None,
           max_leaf_nodes=None, min_impurity_split=1e-07,
           min_samples_leaf=1, min_samples_split=2,
           min_weight_fraction_leaf=0.0, presort=False, random_state=None,
           splitter='best')
#要可視化顯示 首先需要安裝 graphviz   http://www.graphviz.org/Download..php
dot_data = \
    tree.export_graphviz(
        dtr,
        out_file = None,
        feature_names = housing.feature_names[6:8],
        filled = True,
        impurity = False,
        rounded = True
    )
#pip install pydotplus
import pydotplus
graph = pydotplus.graph_from_dot_data(dot_data)
graph.get_nodes()[7].set_fillcolor("#FFF2DD")
from IPython.display import Image
Image(graph.create_png())
output_6_0.png
graph.write_png("dtr_white_background.png")
True
from sklearn.model_selection import train_test_split
data_train, data_test, target_train, target_test = \
    train_test_split(housing.data, housing.target, test_size = 0.1, random_state = 42)
dtr = tree.DecisionTreeRegressor(random_state = 42)
dtr.fit(data_train, target_train)

dtr.score(data_test, target_test)
0.637318351331017
from sklearn.ensemble import RandomForestRegressor
rfr = RandomForestRegressor( random_state = 42)
rfr.fit(data_train, target_train)
rfr.score(data_test, target_test)
0.79086492280964926

樹模型參數(shù):

  • 1.criterion gini or entropy

  • 2.splitter best or random 前者是在所有特征中找最好的切分點(diǎn) 后者是在部分特征中(數(shù)據(jù)量大的時(shí)候)

  • 3.max_features None(所有)骗炉,log2,sqrt厕鹃,N 特征小于50的時(shí)候一般使用所有的

  • 4.max_depth 數(shù)據(jù)少或者特征少的時(shí)候可以不管這個(gè)值,如果模型樣本量多剂碴,特征也多的情況下轻专,可以嘗試限制下

  • 5.min_samples_split 如果某節(jié)點(diǎn)的樣本數(shù)少于min_samples_split,則不會(huì)繼續(xù)再嘗試選擇最優(yōu)特征來進(jìn)行劃分如果樣本量不大催训,不需要管這個(gè)值。如果樣本量數(shù)量級(jí)非常大亚兄,則推薦增大這個(gè)值。

  • 6.min_samples_leaf 這個(gè)值限制了葉子節(jié)點(diǎn)最少的樣本數(shù)审胚,如果某葉子節(jié)點(diǎn)數(shù)目小于樣本數(shù)礼旅,則會(huì)和兄弟節(jié)點(diǎn)一起被剪枝,如果樣本量不大懒鉴,不需要管這個(gè)值碎浇,大些如10W可是嘗試下5

  • 7.min_weight_fraction_leaf 這個(gè)值限制了葉子節(jié)點(diǎn)所有樣本權(quán)重和的最小值,如果小于這個(gè)值奴璃,則會(huì)和兄弟節(jié)點(diǎn)一起被剪枝默認(rèn)是0,就是不考慮權(quán)重問題抄课。一般來說雳旅,如果我們有較多樣本有缺失值,或者分類樹樣本的分布類別偏差很大攒盈,就會(huì)引入樣本權(quán)重,這時(shí)我們就要注意這個(gè)值了僵蛛。

  • 8.max_leaf_nodes 通過限制最大葉子節(jié)點(diǎn)數(shù)迎变,可以防止過擬合,默認(rèn)是"None”驼侠,即不限制最大的葉子節(jié)點(diǎn)數(shù)。如果加了限制泪电,算法會(huì)建立在最大葉子節(jié)點(diǎn)數(shù)內(nèi)最優(yōu)的決策樹。如果特征不多碟渺,可以不考慮這個(gè)值突诬,但是如果特征分成多的話,可以加以限制具體的值可以通過交叉驗(yàn)證得到绒极。

  • 9.class_weight 指定樣本各類別的的權(quán)重蔬捷,主要是為了防止訓(xùn)練集某些類別的樣本過多導(dǎo)致訓(xùn)練的決策樹過于偏向這些類別。這里可以自己指定各個(gè)樣本的權(quán)重如果使用“balanced”周拐,則算法會(huì)自己計(jì)算權(quán)重,樣本量少的類別所對(duì)應(yīng)的樣本權(quán)重會(huì)高审丘。

  • 10.min_impurity_split 這個(gè)值限制了決策樹的增長勾给,如果某節(jié)點(diǎn)的不純度(基尼系數(shù),信息增益播急,均方差,絕對(duì)差)小于這個(gè)閾值則該節(jié)點(diǎn)不再生成子節(jié)點(diǎn)惭笑。即為葉子節(jié)點(diǎn) 生真。

  • n_estimators:要建立樹的個(gè)數(shù)

from sklearn.grid_search import GridSearchCV
tree_param_grid = { 'min_samples_split': list((3,6,9)),'n_estimators':list((10,50,100))}
grid = GridSearchCV(RandomForestRegressor(),param_grid=tree_param_grid, cv=5) #cv交叉驗(yàn)證數(shù)  網(wǎng)格搜索捺宗,驗(yàn)證參數(shù)組合效果
grid.fit(data_train, target_train)
grid.grid_scores_, grid.best_params_, grid.best_score_
([mean: 0.78405, std: 0.00505, params: {'min_samples_split': 3, 'n_estimators': 10},
  mean: 0.80529, std: 0.00448, params: {'min_samples_split': 3, 'n_estimators': 50},
  mean: 0.80673, std: 0.00433, params: {'min_samples_split': 3, 'n_estimators': 100},
  mean: 0.79016, std: 0.00124, params: {'min_samples_split': 6, 'n_estimators': 10},
  mean: 0.80496, std: 0.00491, params: {'min_samples_split': 6, 'n_estimators': 50},
  mean: 0.80671, std: 0.00408, params: {'min_samples_split': 6, 'n_estimators': 100},
  mean: 0.78747, std: 0.00341, params: {'min_samples_split': 9, 'n_estimators': 10},
  mean: 0.80481, std: 0.00322, params: {'min_samples_split': 9, 'n_estimators': 50},
  mean: 0.80603, std: 0.00437, params: {'min_samples_split': 9, 'n_estimators': 100}],
 {'min_samples_split': 3, 'n_estimators': 100},
 0.8067250881273065)
rfr = RandomForestRegressor( min_samples_split=3,n_estimators = 100,random_state = 42)
rfr.fit(data_train, target_train)
rfr.score(data_test, target_test)
0.80908290496531576
pd.Series(rfr.feature_importances_, index = housing.feature_names).sort_values(ascending = False)
MedInc        0.524257
AveOccup      0.137947
Latitude      0.090622
Longitude     0.089414
HouseAge      0.053970
AveRooms      0.044443
Population    0.030263
AveBedrms     0.029084
dtype: float64
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末长已,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子术瓮,更是在濱河造成了極大的恐慌,老刑警劉巖恬汁,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辜伟,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡约巷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門独郎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來囚聚,“玉大人,你說我怎么就攤上這事顽铸×匣剩” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵鬼譬,是天一觀的道長逊脯。 經(jīng)常有香客問我,道長军洼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任避乏,我火速辦了婚禮甘桑,結(jié)果婚禮上歹叮,老公的妹妹穿的比我還像新娘铆帽。我一直安慰自己,他們只是感情好票灰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布宅荤。 她就那樣靜靜地躺著,像睡著了一般惹盼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上手报,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天改化,我揣著相機(jī)與錄音,去河邊找鬼揍鸟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛阳藻,可吹牛的內(nèi)容都是我干的谈撒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼蛔外,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼溯乒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起橙数,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎崖技,沒想到半個(gè)月后钟哥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吁恍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年播演,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片写烤。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡洲炊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出暂衡,到底是詐尸還是另有隱情,我是刑警寧澤狂巢,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布唧领,位于F島的核電站,受9級(jí)特大地震影響祈远,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜萨驶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望叁温。 院中可真熱鬧核畴,春花似錦、人聲如沸跟束。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至略贮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間逃延,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國打工讽膏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盔然,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓愈案,卻偏偏與公主長得像,于是被迫代替她去往敵國和親遭铺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1魂挂、決策樹分類原理 決策樹是通過一系列規(guī)則對(duì)數(shù)據(jù)進(jìn)行分類的過程馁筐。它提供一種在什么條件下會(huì)得到什么值的類似規(guī)則的方...
    程序猿小小白閱讀 5,410評(píng)論 0 1
  • 一、通俗理解熵和基尼不純度 1.信息熵 熵度量事物的不確定性果正,越不確定的事物盟迟,它的熵就越大。隨機(jī)變量的熵的表達(dá)式如...
    阿ashang閱讀 920評(píng)論 0 0
  • 決策樹算法梳理 1. 信息論基礎(chǔ)(熵 聯(lián)合熵 條件熵 信息增益 基尼不純度) 1.1 熵 (entropy)...
    敬標(biāo)閱讀 623評(píng)論 0 0
  • 終于還是提筆了迫皱。 等到 6.1 那天才開始和小泉子還有麗珊說起 "日系拍&玩"PLAN~ 大概是女生的第六感吧辖众,...
    生活什么的簡單就好閱讀 797評(píng)論 0 2
  • 大雨和敬, 逼著我踏入破廟 這破廟真大既绩, 大到我都迷惘还惠。 紅瓦黃檐 朱紅卻斑駁的門上 留下一個(gè)不起眼的 小手印。 雷聲...
    龍雨寒閱讀 221評(píng)論 0 1