欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)決策樹并且使用Graphviz可視化的例子

 更新時(shí)間:2019年08月09日 14:40:24   作者:夕夕如盼  
今天小編就為大家分享一篇Python實(shí)現(xiàn)決策樹并且使用Graphviz可視化的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

一、什么是決策樹(decision tree)——機(jī)器學(xué)習(xí)中的一個(gè)重要的分類算法

決策樹是一個(gè)類似于數(shù)據(jù)流程圖的樹結(jié)構(gòu):其中,每個(gè)內(nèi)部節(jié)點(diǎn)表示一個(gè)屬性上的測(cè)試,每個(gè)分支代表一個(gè)屬性輸出,而每個(gè)樹葉結(jié)點(diǎn)代表類或者類的分布,樹的最頂層是根結(jié)點(diǎn)

根據(jù)天氣情況決定出游與否的案例

二、決策樹算法構(gòu)建

2.1決策樹的核心思路

特征選擇:從訓(xùn)練數(shù)據(jù)的特征中選擇一個(gè)特征作為當(dāng)前節(jié)點(diǎn)的分裂標(biāo)準(zhǔn)(特征選擇的標(biāo)準(zhǔn)不同產(chǎn)生了不同的特征決策樹算法)。

決策樹生成:根據(jù)所選特征評(píng)估標(biāo)準(zhǔn),從上至下遞歸地生成子節(jié)點(diǎn),直到數(shù)據(jù)集不可分則停止決策樹停止聲場(chǎng)。

剪枝:決策樹容易過擬合,需要剪枝來縮小樹的結(jié)構(gòu)和規(guī)模(包括預(yù)剪枝和后剪枝)。

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

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

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

信息熵的計(jì)算公司

S為所有事件集合,p為發(fā)生概率,c為特征總數(shù)。

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

其中,第二項(xiàng)為屬性A對(duì)S劃分的期望信息。

三、IDE3決策樹的Python實(shí)現(xiàn)

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

'''
Created on 2018年7月5日
使用python內(nèi)的科學(xué)計(jì)算的庫(kù)實(shí)現(xiàn)利用決策樹解決問題 
@author: lenovo
'''
#coding:utf-8
from sklearn.feature_extraction import DictVectorizer
#數(shù)據(jù)存儲(chǔ)的格式 python自帶不需要安裝
import csv 
#預(yù)處理的包
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表格存儲(chǔ)成csv格式并且是utf-8格式的編碼
'''
'''
決策樹數(shù)據(jù)源讀取
scklearn要求的數(shù)據(jù)類型 特征值屬性必須是數(shù)值型的
需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理
'''
#裝特征的值
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)
'''
將原始數(shù)據(jù)轉(zhuǎn)換成包含有字典的List
將建好的包含字典的list用DictVectorizer對(duì)象轉(zhuǎn)換成0-1矩陣
'''
vec =DictVectorizer()
dumyX =vec.fit_transform(featureList).toarray();
#對(duì)于類別使用同樣的方法
lb =preprocessing.LabelBinarizer()
dumyY=lb.fit_transform(labelList)
print(dumyY)
'''
 1.構(gòu)建分類器——決策樹模型
 2.使用數(shù)據(jù)訓(xùn)練決策樹模型
'''
clf =tree.DecisionTreeClassifier(criterion="entropy")
clf.fit(dumyX,dumyY)
print(str(clf))
'''
1.將生成的分類器轉(zhuǎn)換成dot格式的 數(shù)據(jù)
2.在命令行中dot -Tpdf iris.dot -o output.pdf將dot文件轉(zhuǎn)換成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對(duì)決策樹的可視化

以上這篇Python實(shí)現(xiàn)決策樹并且使用Graphviz可視化的例子就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python 寫一個(gè)性能測(cè)試工具(一)

    python 寫一個(gè)性能測(cè)試工具(一)

    這篇文章主要介紹了利用python 寫一個(gè)性能測(cè)試工具,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-10-10
  • python中torch.nn.identity()方法詳解

    python中torch.nn.identity()方法詳解

    今天看源碼時(shí)遇到的這個(gè)恒等函數(shù),就如同名字那樣占位符,并沒有實(shí)際操作,下面這篇文章主要給大家介紹了關(guān)于python中torch.nn.identity()方法的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 淺談Python 中的復(fù)數(shù)問題

    淺談Python 中的復(fù)數(shù)問題

    這篇文章主要介紹了在Python 中的復(fù)數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • pytest中conftest.py使用小結(jié)

    pytest中conftest.py使用小結(jié)

    conftest.py文件是Pytest框架里面一個(gè)很重要的東西,本文主要介紹了pytest中conftest.py使用小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • python json.loads兼容單引號(hào)數(shù)據(jù)的方法

    python json.loads兼容單引號(hào)數(shù)據(jù)的方法

    今天小編就為大家分享一篇python json.loads兼容單引號(hào)數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python類反射機(jī)制使用實(shí)例解析

    Python類反射機(jī)制使用實(shí)例解析

    這篇文章主要介紹了Python類反射機(jī)制使用實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • python函數(shù)參數(shù),名稱空間,以及函數(shù)嵌套

    python函數(shù)參數(shù),名稱空間,以及函數(shù)嵌套

    這篇文章主要給大家介紹python函數(shù)參數(shù)、名稱空間、以及函數(shù)嵌套的相關(guān)資料,想具體了解的小伙伴請(qǐng)和小編一起進(jìn)入下面文章內(nèi)容吧
    2021-10-10
  • python實(shí)現(xiàn)CTC以及案例講解

    python實(shí)現(xiàn)CTC以及案例講解

    這篇文章主要介紹了python實(shí)現(xiàn)CTC以及案例講解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • python中內(nèi)置庫(kù)os與sys模塊的詳細(xì)介紹

    python中內(nèi)置庫(kù)os與sys模塊的詳細(xì)介紹

    這篇文章主要介紹了python中內(nèi)置庫(kù)os與sys模塊的詳細(xì)介紹,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • 兒童編程python入門

    兒童編程python入門

    很多家長(zhǎng)都想讓孩子學(xué)習(xí)編程,今天我們給大家分享一下關(guān)于兒童python的入門以及簡(jiǎn)單的代碼,有興趣的朋友閱讀下吧。
    2018-05-05

最新評(píng)論