在IPython Notebook中显示决策树

时间:2015-10-12 17:16:16

标签: python ipython ipython-notebook graphviz decision-tree

我的目标是在IPython笔记本中显示决策树。我的问题是,当我尝试渲染它时,它会打开一个新窗口,而我希望它可以内联显示(如matplotlib图)。

以下是我使用的代码:

def show_tree(decisionTree, out_file, feature_names):
    out_file = 'viz_tree/' + out_file
    export_graphviz(decisionTree, out_file=out_file, feature_names=feature_names)
    dot = ''
    with open(out_file, 'r') as file:
        for line in file:
            dot += line
    dot = Source(dot)
    return dot

decisionTree.fit(inputs, outputs)
d = show_tree(decisionTree, 'tree.dot', col_names)
d.render(view=True)

我知道可以这样做example

你知道我怎么能这样做吗?

1 个答案:

答案 0 :(得分:6)

我最终做的是从源代码安装pydot library(对于python3,pip安装似乎已经破解),然后使用此函数:

import io
from scipy import misc

def show_tree(decisionTree, file_path):
    dotfile = io.StringIO()
    export_graphviz(decisionTree, out_file=dotfile)
    pydot.graph_from_dot_data(dotfile.getvalue()).write_png(file_path)
    i = misc.imread(file_path)
    plt.imshow(i)

# To use it
show_tree(decisionT, 'test.png')

这将图像保存在文件中,该路径由file_path定义。然后将其简单地读作png来显示它。

希望它会帮助你们中的一些人!