python决策树
決策樹的概念
決策樹是大數(shù)據(jù)技術(shù)進行分類和預(yù)測的一種,決策樹學(xué)習(xí)是一種基于實例歸納學(xué)習(xí)算法,它主要從一組無次序、無規(guī)則的實例中推理出以決策樹所代表分類規(guī)則。它采用從上向下的遞歸方式,在決策樹的內(nèi)部節(jié)點進行屬性的比較,并根據(jù)不同屬性值判斷從該節(jié)點向下的分支,在決策樹的葉節(jié)點得到結(jié)論。
為了理解決策樹的概念,下面舉個例子說明:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 表1.銀行貸款者歷史數(shù)據(jù)
銀行依據(jù)上表的銀行貸款者歷史數(shù)據(jù)構(gòu)建如下圖的決策樹,假設(shè)有一筆新的貸款客戶信息:沒有房子、單身、年收入9萬元,銀行根據(jù)決策樹首先對這位客戶進行了解“是否有房”,沒有房子就從上往下的右邊“已婚”走,然后繼續(xù)了解是否結(jié)婚。還是單身沒有結(jié)婚就從上往下的左邊“年收入”走。最后了解客戶的年收入是否大于8萬元,9萬元是大于8萬元的,最后在葉節(jié)點結(jié)論看到“不違約”。銀行就可以預(yù)測客戶相對會有違約情況發(fā)生可能性較低,所以可以決定貸款給客戶。
圖1.銀行貸款決策樹我們現(xiàn)有一筆2017年某銀行的客戶信息和違約情況經(jīng)數(shù)據(jù)處理后,如下圖所示,共計700條數(shù)據(jù)。
表2.2017年某銀行歷史數(shù)據(jù)
通過Anaconda3軟件對上面數(shù)據(jù)進行分析,運行下面的代碼
import pandas as pd from sklearn.linear_model import LogisticRegression as LR from sklearn.linear_model import RandomizedLogisticRegression as RLR from sklearn.tree import DecisionTreeClassifier as DTC from sklearn.tree import export_graphvizfrom sklearn.externals.six import StringIO import pydotplus from IPython.display import Imageif __name__ == "__main__":# 取出數(shù)據(jù)data = pd.read_excel("C:/2018/2017myjb.xlsx")x = data.iloc[:, :8].as_matrix()y = data.iloc[:, 8].as_matrix()# 篩選特征值rlr = RLR()rlr.fit(x, y)rlr_support = rlr.get_support()support_col = data.drop('違約', axis=1).columns[rlr_support]x = data[support_col].as_matrix()# 建立決策樹模型clf = DTC()clf = clf.fit(x, y)dot_data = StringIO()export_graphviz(clf)dot_data = StringIO()export_graphviz(clf,out_file=dot_data,class_names=support_col,filled=True,rounded=True,special_characters=True)graph = pydotplus.graph_from_dot_data(dot_data.getvalue())# 寫入pdfgraph.write_pdf('c:/2018/bankload_tree.pdf')運行代碼過程中,可能會出現(xiàn)這樣的問題,是因為我們電腦沒有安裝GraphViz軟件,無法將輸出結(jié)果轉(zhuǎn)換成pdf。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖2
1.我們先去官網(wǎng)下載軟件安裝在電腦上下載地址:https://graphviz.gitlab.io/_pages/Download/Download_windows.html? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖3
2.將安裝軟件的目錄記下,如C:\Program Files (x86)\Graphviz2.38\
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖4
3.將GraphViz的安裝目錄添加到環(huán)境變量path里
? ?圖5注:為了不把之前path環(huán)境變量覆蓋,我們在原來基礎(chǔ)上加英文下 ;? ,? ? 如?;?C:\Program Files (x86)\Graphviz2.38\ ? ?圖6
我們將獲得下圖的pdf,獲得pdf無法顯示其中的中文 ,還需要配置一些其他東西,比較麻煩 。我們可以簡單把其中文換英文進行分析。
圖7.python決策樹因為處理2017年某銀行歷史數(shù)據(jù)量較大,我們可以看到構(gòu)建的決策樹從上向下的分支特別多。決策樹模型和邏輯回歸模型一樣,模型從數(shù)據(jù)中獲取的有效特征:工齡、地址、負(fù)債利、信用卡負(fù)債,并根據(jù)這根據(jù)這四個特征值構(gòu)建上圖的決策樹。當(dāng)有新的客戶信息時,首先根據(jù)客戶的“工齡”找到某銀行決策樹第一個節(jié)點“工齡”,然后進行客戶“工齡”值與該節(jié)點“工齡”值比較之后確定往向下哪個分支走,重復(fù)操作最后在某銀行決策樹分支的葉末節(jié)點找到客戶是否會有違約情況發(fā)生的結(jié)論。
總結(jié)
- 上一篇: Word处理控件Aspose.Words
- 下一篇: Python后端技术栈