2017-03-06 84 views
0

我正在學習如何使用scikit-learn使用python v3.6做機器學習的決策樹。用graphwiz顯示這個決策樹

這是代碼;

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
import mglearn 
import graphviz 

from sklearn.datasets import load_breast_cancer 
from sklearn.model_selection import train_test_split 

from sklearn.tree import DecisionTreeClassifier 

cancer = load_breast_cancer() 
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, stratify=cancer.target, random_state=42) 
tree = DecisionTreeClassifier(random_state=0) 
tree.fit(X_train, y_train) 

tree = DecisionTreeClassifier(max_depth=4, random_state=0) 
tree.fit(X_train, y_train) 

from sklearn.tree import export_graphviz 
export_graphviz(tree, out_file="tree.dot", class_names=["malignant", "benign"],feature_names=cancer.feature_names, impurity=False, filled=True) 

import graphviz 
with open("tree.dot") as f: 
    dot_graph = f.read() 
graphviz.Source(dot_graph) 

如何使用graphviz查看dot_graph內部是什麼?據推測,它應該看起來像這樣;

enter image description here

+1

檢查[export_graphviz](http://scikit-learn.org/stable/modules/generated/sklearn.tree.export_graphviz.html)函數,您可以使用該函數將.dot轉換爲其他格式,例如.png –

回答

2

graphviz.Source(dot_graph)返回graphviz.files.Source對象。

g = graphviz.Source(dot_graph) 

使用g.render()來創建圖像文件。當我在沒有參數的情況下在代碼上運行它時,我得到了一個Source.gv.pdf,但是您可以指定一個不同的文件名。還有一個快捷方式g.view(),它保存文件並在適當的查看器應用程序中打開它。

如果您將代碼粘貼到豐富的終端中(例如使用內聯圖形或Jupyter筆記本的Spyder/IPython),它將自動顯示圖像而不是對象的Python表示。