python决策树
決策樹的概念
決策樹是大數據技術進行分類和預測的一種,決策樹學習是一種基于實例歸納學習算法,它主要從一組無次序、無規則的實例中推理出以決策樹所代表分類規則。它采用從上向下的遞歸方式,在決策樹的內部節點進行屬性的比較,并根據不同屬性值判斷從該節點向下的分支,在決策樹的葉節點得到結論。
為了理解決策樹的概念,下面舉個例子說明:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 表1.銀行貸款者歷史數據
銀行依據上表的銀行貸款者歷史數據構建如下圖的決策樹,假設有一筆新的貸款客戶信息:沒有房子、單身、年收入9萬元,銀行根據決策樹首先對這位客戶進行了解“是否有房”,沒有房子就從上往下的右邊“已婚”走,然后繼續了解是否結婚。還是單身沒有結婚就從上往下的左邊“年收入”走。最后了解客戶的年收入是否大于8萬元,9萬元是大于8萬元的,最后在葉節點結論看到“不違約”。銀行就可以預測客戶相對會有違約情況發生可能性較低,所以可以決定貸款給客戶。
圖1.銀行貸款決策樹我們現有一筆2017年某銀行的客戶信息和違約情況經數據處理后,如下圖所示,共計700條數據。
表2.2017年某銀行歷史數據
通過Anaconda3軟件對上面數據進行分析,運行下面的代碼
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__":# 取出數據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')運行代碼過程中,可能會出現這樣的問題,是因為我們電腦沒有安裝GraphViz軟件,無法將輸出結果轉換成pdf。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖2
1.我們先去官網下載軟件安裝在電腦上下載地址:https://graphviz.gitlab.io/_pages/Download/Download_windows.html? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖3
2.將安裝軟件的目錄記下,如C:\Program Files (x86)\Graphviz2.38\
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖4
3.將GraphViz的安裝目錄添加到環境變量path里
? ?圖5注:為了不把之前path環境變量覆蓋,我們在原來基礎上加英文下 ;? ,? ? 如?;?C:\Program Files (x86)\Graphviz2.38\ ? ?圖6
我們將獲得下圖的pdf,獲得pdf無法顯示其中的中文 ,還需要配置一些其他東西,比較麻煩 。我們可以簡單把其中文換英文進行分析。
圖7.python決策樹因為處理2017年某銀行歷史數據量較大,我們可以看到構建的決策樹從上向下的分支特別多。決策樹模型和邏輯回歸模型一樣,模型從數據中獲取的有效特征:工齡、地址、負債利、信用卡負債,并根據這根據這四個特征值構建上圖的決策樹。當有新的客戶信息時,首先根據客戶的“工齡”找到某銀行決策樹第一個節點“工齡”,然后進行客戶“工齡”值與該節點“工齡”值比較之后確定往向下哪個分支走,重復操作最后在某銀行決策樹分支的葉末節點找到客戶是否會有違約情況發生的結論。
總結
 
                            
                        - 上一篇: Word处理控件Aspose.Words
- 下一篇: 怎样将pdf转换成jpg格式
