在Google Cloud Datalab中用GraphViz可视化决策树遇执行文件未找到错误
Fixing "InvocationException: GraphViz's executables not found" in Google Cloud Datalab
我刚解决了和你一模一样的问题!在Google Cloud Datalab里用GraphViz可视化决策树时,光通过pip安装Python的graphviz包是不够的——这个包只是GraphViz工具的Python绑定,Datalab容器默认没有安装实际的GraphViz系统可执行文件(比如dot命令),这就是报错的根源。
下面是亲测有效的解决步骤:
安装系统级GraphViz工具
在Datalab的代码单元格中运行以下shell命令(注意开头的!,用来在Datalab中执行系统命令):!apt-get update && apt-get install -y graphviz这会基于Datalab的Debian/Ubuntu镜像,安装完整的GraphViz工具集。
确保Python的graphviz包已安装/更新
虽然你已经装过,但可以再升级到最新版本避免兼容问题:!pip install --upgrade graphviz运行你的决策树可视化代码(补全版)
下面是完整可运行的测试代码,包含训练决策树和可视化的全流程:import graphviz import numpy as np from sklearn.datasets import load_iris from sklearn import tree from sklearn.externals.six import StringIO # 加载数据集 iris = load_iris() train_data = iris.data train_target = iris.target # 训练决策树模型 clf = tree.DecisionTreeClassifier() clf.fit(train_data, train_target) # 生成GraphViz可视化数据 dot_data = StringIO() tree.export_graphviz(clf, out_file=dot_data, feature_names=iris.feature_names, class_names=iris.target_names, filled=True, rounded=True, special_characters=True) # 渲染并显示决策树 graph = graphviz.Source(dot_data.getvalue()) graph.render("iris_decision_tree") # 会在当前目录生成PDF文件 graph # 直接在Datalab单元格中显示可视化结果
执行完这些步骤后,你应该就能正常看到决策树的可视化结果了。之前的解决方案没用,大概率是因为它们针对的是本地环境,而Datalab是云端容器,必须通过apt-get安装系统级依赖才行。
内容的提问来源于stack exchange,提问作者Ken Williams
相关产品推荐
相关产品推荐

