日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python决策树

發(fā)布時間:2024/1/1 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python决策树 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

決策樹的概念

決策樹是大數(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é)

以上是生活随笔為你收集整理的python决策树的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。