溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么使用python?sklearn畫出決策樹并保存為PDF

發(fā)布時(shí)間:2022-07-15 10:21:57 來源:億速云 閱讀:275 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“怎么使用python sklearn畫出決策樹并保存為PDF”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

利用sklearn畫出決策樹并保存為PDF

下載Graphviz

進(jìn)入官網(wǎng)下載并安裝

并將下列路徑配置為環(huán)境變量:

  • D:\software\Graphviz\bin

在cmd中測(cè)試:

  • dot -version

怎么使用python?sklearn畫出決策樹并保存為PDF

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畫出決策樹并保存為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?sklearn畫出決策樹并保存為PDF

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)

“怎么使用python sklearn畫出決策樹并保存為PDF”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI