【问题标题】:Error: "TypeError: 'module' object is not callable" when plotting tree for decision tree model错误:为决策树模型绘制树时出现“TypeError:‘模块’对象不可调用”
【发布时间】:2017-07-14 23:38:50
【问题描述】:

我编写了代码来可视化决策树模型。最初,我遇到了 graphviz's executables not found 之类的错误,但我将其路径添加到环境变量中,甚至重新安装了 graphviz 模块。它现在似乎工作正常。但是现在出现以下错误:

  Traceback (most recent call last):
  File "C:/Ankur/Python36/Python Files/Decision_Tree.py", line 57, in 
  <module>
  Image(graph.create_png())
  TypeError: 'module' object is not callable

代码如下。

from sklearn import tree
from io import StringIO
from PIL import Image
from graphviz import Graph
import pydotplus as py
# Code for creating the model and fitting the data.
#...........................
dot_data=StringIO()
tree.export_graphviz(clf,out_file=dot_data)
graph=py.graph_from_dot_data(dot_data.getvalue())
Image(graph.create_png())

【问题讨论】:

  • 尝试将“from graphviz import Graph”中的 Graph 重命名为其他名称。那里的“图形”可能会干扰变量“图形”,因为当您调用它时,“图形”最终会成为一个模块,而不是来自 graph_from_dot_data() 的结果。也许你在一个不区分大小写的平台上,由于 python 中的一些边缘情况,Graph 可以以某种方式给图取别名。
  • @Hannes Landeholm 我正在使用 PyCharm,它区分大小写。我确实从 GRAPHVIZ 导入了 GRAPH,但我没有使用它。所以,我相信错误在其他地方。我检查了'graph'的类,它是'pydotplus.graphviz.Dot'。

标签: python python-imaging-library


【解决方案1】:

Image 是一个模块,而不是一个函数。见:from PIL import Image

你可能打算做Image.open(graph.create_png())

【讨论】:

  • 我按照您的建议更改了代码,但现在出现了一个新错误:“UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte”
  • 好的,这是另一个不相关的问题。如果你想得到答案,你必须开始一个新问题。您在此处提出的问题已通过此解决方案解决。
  • 是的,我的错!感谢您的努力。
  • 您可能希望将此标记为已接受的答案,以便堆栈溢出贡献者将来不会在不知道它已经解决的情况下花费额外的时间来解决这个问题。
猜你喜欢
  • 2021-05-22
  • 2023-01-29
  • 2015-12-18
  • 2019-08-25
  • 2017-05-22
  • 1970-01-01
  • 1970-01-01
  • 2018-09-26
  • 2018-01-24
相关资源
最近更新 更多