在 IPython 笔记本中显示决策树
Display Decision Tree in IPython Notebook
我的目标是在 IPython 笔记本中显示决策树。我的问题是,当我尝试渲染它时,它会打开一个新的 window 而我希望它被内联显示(如 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。
你知道我该怎么做吗?
我最终做的是从源代码安装 pydot library(pip 安装对于 python3 似乎损坏)然后使用此功能:
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 以显示它。
希望对大家有所帮助!
我的目标是在 IPython 笔记本中显示决策树。我的问题是,当我尝试渲染它时,它会打开一个新的 window 而我希望它被内联显示(如 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。
你知道我该怎么做吗?
我最终做的是从源代码安装 pydot library(pip 安装对于 python3 似乎损坏)然后使用此功能:
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 以显示它。
希望对大家有所帮助!