Python實(shí)現(xiàn)初階決策樹

《Python數(shù)據(jù)挖掘入門與實(shí)踐》這本書中關(guān)于決策樹部分的講解,代碼部分相對(duì)簡(jiǎn)要击奶,但坑爹的是辈双,他給的數(shù)據(jù)下載網(wǎng)站,人家改版了柜砾,根本找不到數(shù)據(jù)湃望,進(jìn)行測(cè)試,于是我又用“鳶尾花”數(shù)據(jù)測(cè)試了一下決策樹算法局义。

閑話少說喜爷,直接上代碼。

1萄唇、導(dǎo)入鳶尾花數(shù)據(jù)

鳶尾花數(shù)據(jù)檩帐,可以直接從sklearn庫中進(jìn)行載入,分別將自變量和因變量另萤,賦值為x和y湃密。

from sklearn.datasets import load_iris
import numpy as np
import pandas as pd 
X_data = load_iris().data
y_data = load_iris().target

2、設(shè)置訓(xùn)練集和測(cè)試集

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_data, y_data)

3四敞、建立決策樹對(duì)象

from sklearn.tree import DecisionTreeClassifier
dtc = DecisionTreeClassifier(max_leaf_nodes=4,random_state = 14)

max_leaf_nodes=4泛源,指保留最大節(jié)點(diǎn)的數(shù)量為4,可以理解為樹的深度為4忿危。
random_state = 14达箍,設(shè)置隨機(jī)種子為14,使用相同的隨機(jī)種子能包粽子幾次的實(shí)驗(yàn)結(jié)果相同铺厨。但是缎玫,在自己的實(shí)驗(yàn)中,為保證隨機(jī)性解滓,可以設(shè)置不同的隨機(jī)種子赃磨。

4、訓(xùn)練并預(yù)測(cè)

dtc.fit(X_train,y_train) #用訓(xùn)練集進(jìn)行訓(xùn)練
y_predict = dtc.predict(X_test) # 利用測(cè)試數(shù)據(jù)生成預(yù)測(cè)值y_predict
# 判斷與訓(xùn)練集y是否相等并返回正確率
accuracy  = np.mean(y_predict == y_test)*100
print('準(zhǔn)確率為%.2f%%' % accuracy)

得出的結(jié)果:準(zhǔn)確率為97.37%

5洼裤、得到?jīng)Q策樹圖

導(dǎo)入export_graphviz邻辉,生成dot文件

from sklearn.tree import export_graphviz
export_graphviz(clf,out_file = 'tree0.dot')

生成dot文件后,用GVEdit命令轉(zhuǎn)化成png格式或者其他格式腮鞍。
首先安裝graphviz-2.38值骇,然后設(shè)置環(huán)境變量(本人是windows環(huán)境下運(yùn)行的),然后敲下如下命令即可轉(zhuǎn)化成png格式的樹圖缕减。

dot -Tpng tree0.dot -o tree0.png

生成的樹圖如下所示:


樹圖.png

由上圖可知雷客,此次創(chuàng)建決策用的是信息增益熵,主要用到兩個(gè)特征桥狡,即X[2]和X[3]搅裙。
根節(jié)點(diǎn)處X[2]小于等于2.45的為一類皱卓,且均為第一類鳶尾花
X[2]大于2.45,且X[3]大于1.75的為一類部逮,且大部分為第三類鳶尾花娜汁,只有一個(gè)樣本為第二類鳶尾花。
X[3]小于等于1.75兄朋,且X[2]小于等于4.95的為一類掐禁,且大部分為第二類鳶尾花,只有一個(gè)樣本為第三類鳶尾花颅和。
X[3]小于等于1.75傅事,且X[2]大于4.95的為一類,有2個(gè)為第二類峡扩,有4個(gè)為第三類鳶尾花蹭越。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市教届,隨后出現(xiàn)的幾起案子响鹃,更是在濱河造成了極大的恐慌,老刑警劉巖案训,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件买置,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡强霎,警方通過查閱死者的電腦和手機(jī)忿项,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來城舞,“玉大人倦卖,你說我怎么就攤上這事〈徽” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵熟嫩,是天一觀的道長(zhǎng)秦踪。 經(jīng)常有香客問我,道長(zhǎng)掸茅,這世上最難降的妖魔是什么椅邓? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮昧狮,結(jié)果婚禮上景馁,老公的妹妹穿的比我還像新娘。我一直安慰自己逗鸣,他們只是感情好合住,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布绰精。 她就那樣靜靜地躺著,像睡著了一般透葛。 火紅的嫁衣襯著肌膚如雪笨使。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天僚害,我揣著相機(jī)與錄音硫椰,去河邊找鬼。 笑死萨蚕,一個(gè)胖子當(dāng)著我的面吹牛靶草,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播岳遥,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼奕翔,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了寒随?” 一聲冷哼從身側(cè)響起糠悯,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎妻往,沒想到半個(gè)月后互艾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡讯泣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年纫普,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片好渠。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡昨稼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拳锚,到底是詐尸還是另有隱情假栓,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布霍掺,位于F島的核電站匾荆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏杆烁。R本人自食惡果不足惜牙丽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望兔魂。 院中可真熱鬧烤芦,春花似錦、人聲如沸析校。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绰播,卻和暖如春骄噪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蠢箩。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國打工链蕊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谬泌。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓滔韵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親掌实。 傳聞我的和親對(duì)象是個(gè)殘疾皇子陪蜻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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