python sklearn:教你如何畫出決策書,并保存為PDF的實現過程
這篇文章主要介紹了python sklearn畫出決策樹并保存為PDF的實現過程,這篇文章具有很高的參考價值,希望各位讀者可以認真仔細的閱讀。
利用sklearn畫出決策樹并保存為PDF
下載Graphviz
進入官網下載并安裝:
https://graphviz.gitlab.io/_pages/Download/Download_windows.html
并將下列路徑配置為環境變量:
D:softwareGraphvizbin
在cmd中測試:
dot -version
python代碼
import numpy as np
import pandas as pd
from sklearn import tree
import graphviz
# x,y是sklearn中需要擬合的數據
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) # 重要參數可定制
graph = graphviz.Source(dot_data)
graph.render(view=True, format="pdf", filename="decisiontree_pdf")
可以生成一張賊帥的決策樹PDF
python sklearn決策樹運用
數據形式(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*-
# 將字典 轉化為 sklearn 用的數據形式 數據型 矩陣
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
## 數據預處理
featureList = []
labelList = []
for row in reader:
# print row[-1]
labelList.append(row[-1])
# 下面這幾步的目的是為了讓特征值轉化成一種字典的形式,就可以調用sk-learn里面的DictVectorizer,直接將特征的類別值轉化成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的轉化,直接用preprocessing的LabelBinarizer方法
lb = preprocessing.LabelBinarizer()
dummyY = lb.fit_transform(labelList)
print("dummyY:"+str(dummyY))
print("labelList:"+str(labelList))
#criterion是選擇決策樹節點的 標準 ,這里是按照“熵”為標準,即ID3算法;默認標準是gini index,即CART算法。
clf = tree.DecisionTreeClassifier()
clf = clf.fit(dummyX,dummyY)
print("clf:"+str(clf))
# 導入相關函數,可視化決策樹
# 導出的結果是一個dot文件(在系統默認路勁),需要安裝Graphviz才能將它住哪華為PDF或png格式
# 輸出的dot文件可以使用graphvize軟件轉為PDF,graphvize安裝目錄中的bin目錄放入到環境變量的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)
以上就是小編給大家的詳細解答了,希望可以為各位讀者帶來幫助
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/127554.html
摘要:起步在理論篇我們介紹了決策樹的構建和一些關于熵的計算方法,這篇文章將根據一個例子,用代碼上來實現決策樹。轉化文件至可視化決策樹的命令得到一個文件,打開可以看到決策樹附錄本次應用的全部代碼向量化向量化構造決策樹保存模型測試數據 起步 在理論篇我們介紹了決策樹的構建和一些關于熵的計算方法,這篇文章將根據一個例子,用代碼上來實現決策樹。 實驗環境 操作系統: win10 64 編程語言: ...
馬上就要開始啦這次共組織15個組隊學習 涵蓋了AI領域從理論知識到動手實踐的內容 按照下面給出的最完備學習路線分類 難度系數分為低、中、高三檔 可以按照需要參加 - 學習路線 - showImg(https://segmentfault.com/img/remote/1460000019082128); showImg(https://segmentfault.com/img/remote/...
摘要:決策樹分支轉存寫代碼的方法今天是周日,我還在倒騰決策樹,然后發現了一個不用裝軟件也能倒的方法,而且更簡單。剛開始看視頻的時候是看的的視頻,講的真差,太模糊了,不適合我。 決策樹分支dot轉存pdf 1、寫代碼的方法 今天是周日,我還在倒騰決策樹,然后發現了一個不用裝軟件也能倒pdf的方法,而且更簡單。參照了這個中文的文檔實現:http://sklearn.apachecn.org/c....
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02