Python數(shù)據(jù)科學(xué):決策樹(shù)
決策樹(shù)呈樹(shù)形結(jié)構(gòu),是一種基本的回歸和分類(lèi)方法。
決策樹(shù)模型的優(yōu)點(diǎn)在于可讀性強(qiáng)、分類(lèi)速度快。
下面通過(guò)從「譯學(xué)館」搬運(yùn)的兩個(gè)視頻,來(lái)簡(jiǎn)單了解下決策樹(shù)。
最后來(lái)實(shí)戰(zhàn)一波,建立一個(gè)簡(jiǎn)單的決策樹(shù)模型。
/ 01 / 決策樹(shù)算法
本次主要涉及兩類(lèi)決策樹(shù),Quinlan系列決策樹(shù)和CART決策樹(shù)。
前者涉及的算法包括ID3算法、C4.5算法及C5.0算法,后者則是CART算法。
前者一系列算法的步驟總體可以概括為建樹(shù)和剪樹(shù)。
在建樹(shù)步驟中,首先選擇最有解釋力度的變量,接著對(duì)每個(gè)變量選擇最優(yōu)的分割點(diǎn)進(jìn)行剪樹(shù)。
剪樹(shù),去掉決策樹(shù)中噪音或異常數(shù)據(jù),在損失一定預(yù)測(cè)精度的情況下,能夠控制決策樹(shù)的復(fù)雜度,提高其泛化能力。
在剪樹(shù)步驟中,分為前剪枝和后剪枝。
前剪枝用于控制樹(shù)的生成規(guī)模,常用方法有控制決策樹(shù)最大深度、控制樹(shù)中父結(jié)點(diǎn)和子結(jié)點(diǎn)的最少樣本量或比例。
后剪枝用于刪除沒(méi)有意義的分組,常用方法有計(jì)算結(jié)點(diǎn)中目標(biāo)變量預(yù)測(cè)精度或誤差、綜合考慮誤差與復(fù)雜度進(jìn)行剪樹(shù)。
此外在ID3算法中,使用信息增益挑選最有解釋力度的變量。
其中信息增益為信息熵減去條件熵得到,增益越大,則變量的影響越大。
C4.5算法則是使用信息增益率作為變量篩選的指標(biāo)。
CART算法可用于分類(lèi)或數(shù)值預(yù)測(cè),使用基尼系數(shù)(gini)作為選擇最優(yōu)分割變量的指標(biāo)。
/ 02/ Python實(shí)現(xiàn)
慣例,繼續(xù)使用書(shū)中提供的數(shù)據(jù)。
一份汽車(chē)違約貸款數(shù)據(jù)集。
讀取數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行清洗處理。
import os
import pydotplus
import numpy as np
import pandas as pd
import sklearn.tree as tree
import matplotlib.pyplot as plt
from IPython.display import Image
import sklearn.metrics as metrics
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split, ParameterGrid, GridSearchCV
# 消除pandas輸出省略號(hào)情況
pd.set_option('display.max_columns', None)
# 設(shè)置顯示寬度為1000,這樣就不會(huì)在IDE中換行了
pd.set_option('display.width', 1000)
# 讀取數(shù)據(jù),skipinitialspace:忽略分隔符后的空白
accepts = pd.read_csv('accepts.csv', skipinitialspace=True)
# dropna:對(duì)缺失的數(shù)據(jù)進(jìn)行刪除
accepts = accepts.dropna(axis=0, how='any')
# 因變量,是否違約
target = accepts['bad_ind']
# 自變量
data = accepts.ix[:, 'bankruptcy_ind':'used_ind']
# 業(yè)務(wù)處理,loan_amt:貸款金額,tot_income:月均收入
data['lti_temp'] = data['loan_amt'] / data['tot_income']
data['lti_temp'] = data['lti_temp'].map(lambda x: 10 if x >= 10 else x)
# 刪除貸款金額列
del data['loan_amt']
# 替換曾經(jīng)破產(chǎn)標(biāo)識(shí)列
data['bankruptcy_ind'] = data['bankruptcy_ind'].replace({'N': 0, 'Y': 1})
接下來(lái)使用scikit-learn將數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集。
# 使用scikit-learn將數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集
train_data, test_data, train_target, test_target = train_test_split(data, target, test_size=0.2, train_size=0.8, random_state=1234)
初始化一個(gè)決策樹(shù)模型,使用訓(xùn)練集進(jìn)行訓(xùn)練。
采用基尼系數(shù)作為樹(shù)的生長(zhǎng)依據(jù),樹(shù)的最大深度為3,每一類(lèi)標(biāo)簽的權(quán)重一樣。
# 初始化一個(gè)決策樹(shù)模型
clf = DecisionTreeClassifier(criterion='gini', max_depth=3, class_weight=None, random_state=1234)
# 輸出決策樹(shù)模型信息
print(clf.fit(train_data, train_target))
輸出的模型信息如下。
對(duì)生成的決策樹(shù)模型進(jìn)行評(píng)估。
# 輸出決策樹(shù)模型的決策類(lèi)評(píng)估指標(biāo)
print(metrics.classification_report(test_target, clf.predict(test_data)))
# 對(duì)不同的因變量進(jìn)行權(quán)重設(shè)置
clf.set_params(**{'class_weight': {0: 1, 1: 3}})
clf.fit(train_data, train_target)
# 輸出決策樹(shù)模型的決策類(lèi)評(píng)估指標(biāo)
print(metrics.classification_report(test_target, clf.predict(test_data)))
# 輸出決策樹(shù)模型的變量重要性排序
print(list(zip(data.columns, clf.feature_importances_)))
輸出如下。
可以看出對(duì)因變量標(biāo)簽進(jìn)行權(quán)重設(shè)置后,模型對(duì)違約用戶的f1-score(精確率和召回率的調(diào)和平均數(shù))提高了,為0.46。
違約用戶被識(shí)別的靈敏度也從0.24提高到了0.46。
此外決策樹(shù)模型的變量重要性排序?yàn)椤窮ICO打分」、「信用卡授權(quán)額度」、「貸款金額/建議售價(jià)*100」。

發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
圖片新聞
-
機(jī)器人奧運(yùn)會(huì)戰(zhàn)報(bào):宇樹(shù)機(jī)器人摘下首金,天工Ultra搶走首位“百米飛人”
-
存儲(chǔ)圈掐架!江波龍起訴佰維,索賠121萬(wàn)
-
長(zhǎng)安汽車(chē)母公司突然更名:從“中國(guó)長(zhǎng)安”到“辰致科技”
-
豆包前負(fù)責(zé)人喬木出軌BP后續(xù):均被辭退
-
字節(jié)AI Lab負(fù)責(zé)人李航卸任后返聘,Seed進(jìn)入調(diào)整期
-
員工持股爆雷?廣汽埃安緊急回應(yīng)
-
中國(guó)“智造”背后的「關(guān)鍵力量」
-
小米汽車(chē)研發(fā)中心重磅落地,寶馬家門(mén)口“搶人”
最新活動(dòng)更多
-
即日-9.1立即下載>> 【限時(shí)下載】ADI中國(guó)三十周年感恩回饋助力企業(yè)升級(jí)!
-
即日-9.16點(diǎn)擊進(jìn)入 >> 【限時(shí)福利】TE 2025國(guó)際物聯(lián)網(wǎng)展·深圳站
-
10月23日立即報(bào)名>> Works With 開(kāi)發(fā)者大會(huì)深圳站
-
11月27日立即報(bào)名>> 【工程師系列】汽車(chē)電子技術(shù)在線大會(huì)
-
精彩回顧立即查看>> 【在線研討會(huì)】解析安森美(onsemi)高精度與超低功耗CGM系統(tǒng)解決方案
-
精彩回顧立即查看>> 【在線會(huì)議】CAE優(yōu)化設(shè)計(jì):醫(yī)療器械設(shè)計(jì)的應(yīng)用案例與方案解析
推薦專(zhuān)題
- 1 傳魏建軍與賈躍亭合作,長(zhǎng)城汽車(chē)出海美國(guó)
- 2 阿里首位程序員,“掃地僧”多隆已離職
- 3 先進(jìn)算力新選擇 | 2025華為算力場(chǎng)景發(fā)布會(huì)暨北京xPN伙伴大會(huì)成功舉辦
- 4 宇樹(shù)機(jī)器人撞人事件的深度剖析:六維力傳感器如何成為人機(jī)安全的關(guān)鍵屏障
- 5 2025年第一支10倍股,來(lái)了!
- 6 清華跑出具身智能獨(dú)角獸:給機(jī)器人安上眼睛和大腦,融資近20億
- 7 特朗普要求英特爾首位華人 CEO 辭職
- 8 騰訊 Q2 財(cái)報(bào)亮眼:AI 已成第二增長(zhǎng)曲線
- 9 具身智能機(jī)器人量產(chǎn)前夜,標(biāo)準(zhǔn)機(jī)腦正在成型
- 10 谷歌吹響AI沖鋒號(hào),AI還有哪些機(jī)會(huì)