python sklearn:教你如何畫出決策書,并保存為PDF的實(shí)現(xiàn)過程
這篇文章主要介紹了python sklearn畫出決策樹并保存為PDF的實(shí)現(xiàn)過程,這篇文章具有很高的參考價(jià)值,希望各位讀者可以認(rèn)真仔細(xì)的閱讀。
利用sklearn畫出決策樹并保存為PDF
下載Graphviz
進(jìn)入官網(wǎng)下載并安裝:
https://graphviz.gitlab.io/_pages/Download/Download_windows.html
并將下列路徑配置為環(huán)境變量:
D:softwareGraphvizbin
在cmd中測(cè)試:
dot -version
python代碼
import numpy as np
import pandas as pd
from sklearn import tree
import graphviz
# x,y是sklearn中需要擬合的數(shù)據(jù)
x = np.array(exam_train)
y = np.array(classes_train)
clf = tree.DecisionTreeClassifier(criterion='entropy', class_weight='balanced', max_depth=25)
clf = clf.fit(x, y)
dot_data = tree.export_graphviz(clf, out_file=None, feature_names=None, filled=True, rounded=True) # 重要參數(shù)可定制
graph = graphviz.Source(dot_data)
graph.render(view=True, format="pdf", filename="decisiontree_pdf")
可以生成一張賊帥的決策樹PDF
python sklearn決策樹運(yùn)用
數(shù)據(jù)形式(tree.csv)
age look income orderly target
older ugly low yes no
young ugly high no no
young handsome low no no
young handsome high yes yes
young handsome medium yes yes
young handsome medium no no
python源代碼:
# -*- coding:utf-8*-
# 將字典 轉(zhuǎn)化為 sklearn 用的數(shù)據(jù)形式 數(shù)據(jù)型 矩陣
from sklearn.feature_extraction import DictVectorizer
import csv
from sklearn import preprocessing
from sklearn import tree
allElectronicsData = open('c:/pic/data/tree.csv','rb')
reader = csv.reader(allElectronicsData)
header = reader.next()
# print header
## 數(shù)據(jù)預(yù)處理
featureList = []
labelList = []
for row in reader:
# print row[-1]
labelList.append(row[-1])
# 下面這幾步的目的是為了讓特征值轉(zhuǎn)化成一種字典的形式,就可以調(diào)用sk-learn里面的DictVectorizer,直接將特征的類別值轉(zhuǎn)化成0,1值
rowDict = {}
for i in range(1, len(row) - 1):
rowDict[header[i]] = row[i]
featureList.append(rowDict)
for each in featureList:
print each
# Vectorize features
vec = DictVectorizer()
dummyX = vec.fit_transform(featureList).toarray()
print("dummyX:"+str(dummyX))
print(vec.get_feature_names())
# label的轉(zhuǎn)化,直接用preprocessing的LabelBinarizer方法
lb = preprocessing.LabelBinarizer()
dummyY = lb.fit_transform(labelList)
print("dummyY:"+str(dummyY))
print("labelList:"+str(labelList))
#criterion是選擇決策樹節(jié)點(diǎn)的 標(biāo)準(zhǔn) ,這里是按照“熵”為標(biāo)準(zhǔn),即ID3算法;默認(rèn)標(biāo)準(zhǔn)是gini index,即CART算法。
clf = tree.DecisionTreeClassifier()
clf = clf.fit(dummyX,dummyY)
print("clf:"+str(clf))
# 導(dǎo)入相關(guān)函數(shù),可視化決策樹
# 導(dǎo)出的結(jié)果是一個(gè)dot文件(在系統(tǒng)默認(rèn)路勁),需要安裝Graphviz才能將它住哪華為PDF或png格式
# 輸出的dot文件可以使用graphvize軟件轉(zhuǎn)為PDF,graphvize安裝目錄中的bin目錄放入到環(huán)境變量的Path中
# 使用如下命令
#cmd
# dot -Tpdf c:/tree.dot -o c:/tree.pdf
#下載地址:http://www.graphviz.org/Download_windows.php
#生成dot文件
with open("c:/tree.dot",'w') as f:
f = tree.export_graphviz(clf, feature_names= vec.get_feature_names(),out_file= f)
以上就是小編給大家的詳細(xì)解答了,希望可以為各位讀者帶來幫助
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/127554.html
摘要:起步在理論篇我們介紹了決策樹的構(gòu)建和一些關(guān)于熵的計(jì)算方法,這篇文章將根據(jù)一個(gè)例子,用代碼上來實(shí)現(xiàn)決策樹。轉(zhuǎn)化文件至可視化決策樹的命令得到一個(gè)文件,打開可以看到?jīng)Q策樹附錄本次應(yīng)用的全部代碼向量化向量化構(gòu)造決策樹保存模型測(cè)試數(shù)據(jù) 起步 在理論篇我們介紹了決策樹的構(gòu)建和一些關(guān)于熵的計(jì)算方法,這篇文章將根據(jù)一個(gè)例子,用代碼上來實(shí)現(xiàn)決策樹。 實(shí)驗(yàn)環(huán)境 操作系統(tǒng): win10 64 編程語(yǔ)言: ...
馬上就要開始啦這次共組織15個(gè)組隊(duì)學(xué)習(xí) 涵蓋了AI領(lǐng)域從理論知識(shí)到動(dòng)手實(shí)踐的內(nèi)容 按照下面給出的最完備學(xué)習(xí)路線分類 難度系數(shù)分為低、中、高三檔 可以按照需要參加 - 學(xué)習(xí)路線 - showImg(https://segmentfault.com/img/remote/1460000019082128); showImg(https://segmentfault.com/img/remote/...
摘要:決策樹分支轉(zhuǎn)存寫代碼的方法今天是周日,我還在倒騰決策樹,然后發(fā)現(xiàn)了一個(gè)不用裝軟件也能倒的方法,而且更簡(jiǎn)單。剛開始看視頻的時(shí)候是看的的視頻,講的真差,太模糊了,不適合我。 決策樹分支dot轉(zhuǎn)存pdf 1、寫代碼的方法 今天是周日,我還在倒騰決策樹,然后發(fā)現(xiàn)了一個(gè)不用裝軟件也能倒pdf的方法,而且更簡(jiǎn)單。參照了這個(gè)中文的文檔實(shí)現(xiàn):http://sklearn.apachecn.org/c....
閱讀 928·2023-01-14 11:38
閱讀 902·2023-01-14 11:04
閱讀 759·2023-01-14 10:48
閱讀 2065·2023-01-14 10:34
閱讀 968·2023-01-14 10:24
閱讀 844·2023-01-14 10:18
閱讀 512·2023-01-14 10:09
閱讀 591·2023-01-14 10:02