日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python實現決策樹并且使用Graphviz可視化的例子

系統 2031 0

一、什么是決策樹(decision tree)――機器學習中的一個重要的分類算法

決策樹是一個類似于數據流程圖的樹結構:其中,每個內部節點表示一個屬性上的測試,每個分支代表一個屬性輸出,而每個樹葉結點代表類或者類的分布,樹的最頂層是根結點

根據天氣情況決定出游與否的案例

Python實現決策樹并且使用Graphviz可視化的例子_第1張圖片

二、決策樹算法構建

2.1決策樹的核心思路

特征選擇:從訓練數據的特征中選擇一個特征作為當前節點的分裂標準(特征選擇的標準不同產生了不同的特征決策樹算法)。

決策樹生成:根據所選特征評估標準,從上至下遞歸地生成子節點,直到數據集不可分則停止決策樹停止聲場。

剪枝:決策樹容易過擬合,需要剪枝來縮小樹的結構和規模(包括預剪枝和后剪枝)。

2.2 熵的概念:度量信息的方式

實現決策樹的算法包括ID3、C4.5算法等。常見的ID3核心思想是以信息增益度量屬性選擇,選擇分裂后信息增益最大的屬性進行分裂。

一條信息的信息量大小和它的不確定性有直接的關系,要搞清楚一件非常不確定的事情,或者是我們一無所知的事情,需要大量的信息====>信息量的度量就等于不確定性的 多少。也就是說變量的不確定性越大,熵就越大

信息熵的計算公司

Python實現決策樹并且使用Graphviz可視化的例子_第2張圖片

S為所有事件集合,p為發生概率,c為特征總數。

信息增益(information gain)是指信息劃分前后的熵的變化,也就是說由于使用這個屬性分割樣例而導致的期望熵降低。也就是說,信息增益就是原有信息熵與屬性劃分后信息熵(需要對劃分后的信息熵取期望值)的差值,具體計算如下:

其中,第二項為屬性A對S劃分的期望信息。

三、IDE3決策樹的Python實現

以下面這個不同年齡段的人買電腦的情況為例子建模型算法

Python實現決策樹并且使用Graphviz可視化的例子_第3張圖片

            
'''
Created on 2018年7月5日
使用python內的科學計算的庫實現利用決策樹解決問題 
@author: lenovo
'''
#coding:utf-8
from sklearn.feature_extraction import DictVectorizer
#數據存儲的格式 python自帶不需要安裝
import csv 
#預處理的包
from sklearn import preprocessing
from sklearn.externals.six import StringIO
from sklearn.tree import tree 
from sklearn.tree import export_graphviz
'''
文件保存格式需要是utf-8
window中的目錄形式需要是左斜杠 F:/AA_BigData/test_data/test1.csv
excel表格存儲成csv格式并且是utf-8格式的編碼
'''
'''
決策樹數據源讀取
scklearn要求的數據類型 特征值屬性必須是數值型的
需要對數據進行預處理
'''
#裝特征的值
featureList=[] 
#裝類別的詞
labelList=[]
with open("F:/AA_BigData/test_data/decision_tree.csv", "r",encoding="utf-8") as csvfile:
 decision =csv.reader(csvfile)
 headers =[]
 row =1
 for item in decision:
 if row==1:
  row=row+1
  for head in item:
  headers.append(head)
 else:
  itemDict={}
  labelList.append(item[len(item)-1])
  for num in range(1,len(item)-1):
#  print(item[num])
  itemDict[headers[num]]=item[num]
  featureList.append(itemDict) 
print(headers)
print(labelList)
print(featureList)
'''
將原始數據轉換成包含有字典的List
將建好的包含字典的list用DictVectorizer對象轉換成0-1矩陣
'''
vec =DictVectorizer()
dumyX =vec.fit_transform(featureList).toarray();
#對于類別使用同樣的方法
lb =preprocessing.LabelBinarizer()
dumyY=lb.fit_transform(labelList)
print(dumyY)
'''
 1.構建分類器――決策樹模型
 2.使用數據訓練決策樹模型
'''
clf =tree.DecisionTreeClassifier(criterion="entropy")
clf.fit(dumyX,dumyY)
print(str(clf))
'''
1.將生成的分類器轉換成dot格式的 數據
2.在命令行中dot -Tpdf iris.dot -o output.pdf將dot文件轉換成pdf圖的文件
'''
#視頻上講的不適用python3.5
with open("F:/AA_BigData/test_data/decisiontree.dot", "w") as wFile:
 export_graphviz(clf,out_file=wFile,feature_names=vec.get_feature_names())
 
 

          

Graphviz對決策樹的可視化

Python實現決策樹并且使用Graphviz可視化的例子_第4張圖片

以上這篇Python實現決策樹并且使用Graphviz可視化的例子就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 哈巴河县| 广南县| 咸阳市| 鄂温| 突泉县| 旬邑县| 自治县| 奉贤区| 安徽省| 阿坝| 南充市| 杨浦区| 岳普湖县| 建阳市| 裕民县| 丰镇市| 京山县| 禹城市| 酉阳| 佳木斯市| 龙门县| 伊吾县| 新疆| 石台县| 宜州市| 肇庆市| 夏津县| 江阴市| 平乡县| 肥乡县| 鸡泽县| 枣强县| 阿拉善盟| 丹阳市| 吴旗县| 四川省| 平阴县| 连城县| 黑水县| 沾化县| 兴义市|