Python 使用XGBoost打印树返回Graphviz错误

Python 使用XGBoost打印树返回Graphviz错误,python,graphviz,xgboost,Python,Graphviz,Xgboost,我曾尝试使用XGBoost绘制决策树 . 和。 我的代码: 模型是用save\u Model方法保存的,并且正在以其他方式工作(我尝试过用它进行预测)。唯一的问题是plot_tree函数,它返回以下错误: Format: "png" not recognized. Use one of: Traceback (most recent call last): File "C:/Users/jakub/Desktop/thesis_ML/main.py", line 35, in <mod

我曾尝试使用XGBoost绘制决策树 . 和。
我的代码:

模型是用
save\u Model
方法保存的,并且正在以其他方式工作(我尝试过用它进行预测)。唯一的问题是
plot_tree
函数,它返回以下错误:

Format: "png" not recognized. Use one of:
Traceback (most recent call last):
  File "C:/Users/jakub/Desktop/thesis_ML/main.py", line 35, in <module>
    xgb.plot_tree(model)
  File "C:\Users\jakub\anaconda3\envs\Inz_ML\lib\site-packages\xgboost\plotting.py", line 248, in plot_tree
    s.write(g.pipe(format='png'))
  File "C:\Users\jakub\anaconda3\envs\Inz_ML\lib\site-packages\graphviz\files.py", line 136, in pipe
    out = backend.pipe(self._engine, format, data,
  File "C:\Users\jakub\anaconda3\envs\Inz_ML\lib\site-packages\graphviz\backend.py", line 244, in pipe
    out, _ = run(cmd, input=data, capture_output=True, check=True, quiet=quiet)
  File "C:\Users\jakub\anaconda3\envs\Inz_ML\lib\site-packages\graphviz\backend.py", line 183, in run
    raise CalledProcessError(proc.returncode, cmd,
graphviz.backend.CalledProcessError: Command '['dot', '-Tpng']' returned non-zero exit status 1. [stderr: b'Format: "png" not recognized. Use one of:\r\n']

Process finished with exit code 1
格式:无法识别“png”。使用以下其中一种:
回溯(最近一次呼叫最后一次):
文件“C:/Users/jakub/Desktop/thesis_ML/main.py”,第35行,在
xgb.绘图树(模型)
文件“C:\Users\jakub\anaconda3\envs\Inz_ML\lib\site packages\xgboost\plotting.py”,第248行,在绘图树中
s、 写入(g.pipe(format='png'))
管道中第136行的文件“C:\Users\jakub\anaconda3\envs\Inz_ML\lib\site packages\graphviz\files.py”
out=后端.pipe(self.\u引擎、格式、数据、,
管道中的文件“C:\Users\jakub\anaconda3\envs\Inz_ML\lib\site packages\graphviz\backend.py”,第244行
输出,运行(cmd,输入=数据,捕获输出=真,检查=真,安静=安静)
文件“C:\Users\jakub\anaconda3\envs\Inz_ML\lib\site packages\graphviz\backend.py”,第183行,正在运行
引发被调用的进程错误(proc.returncode,cmd,
graphviz.backend.CalledProcessError:命令'['dot','-Tpng']'返回非零退出状态1。[标准:b'格式:“png”无法识别。请使用下列命令之一:\r\n']
进程已完成,退出代码为1

我已经在Windows(“下载页面中的Stable 2.44 Windows安装包”)和Python(
pip install Graphviz
)中安装了Graphviz。Graphviz在我的PATH系统变量中。我做错了什么?我如何解决这个问题?我甚至可以解决这个问题,还是XGBoost内部的某些内容随着最近的Graphviz更新而发生了变化(最近更新了)?

我遇到了同样的问题,但我已经解决了。我是如何解决的? 这是我的答案

  • 请安装2.3.8.msi.graphviz的graphviz

  • 安装已下载的msi软件包,然后将安装路径添加到环境路径,如“C:\Program Files(x86)\Graphviz2.38;C:\Program Files(x86)\Graphviz2.38\bin”

  • pip安装graphviz

  • 下面是我的结果。


  • 你不能使用2.4.4版本谢谢!所以正如我所怀疑的,Graphviz在更新过程中引入了一个bug。
    Format: "png" not recognized. Use one of:
    Traceback (most recent call last):
      File "C:/Users/jakub/Desktop/thesis_ML/main.py", line 35, in <module>
        xgb.plot_tree(model)
      File "C:\Users\jakub\anaconda3\envs\Inz_ML\lib\site-packages\xgboost\plotting.py", line 248, in plot_tree
        s.write(g.pipe(format='png'))
      File "C:\Users\jakub\anaconda3\envs\Inz_ML\lib\site-packages\graphviz\files.py", line 136, in pipe
        out = backend.pipe(self._engine, format, data,
      File "C:\Users\jakub\anaconda3\envs\Inz_ML\lib\site-packages\graphviz\backend.py", line 244, in pipe
        out, _ = run(cmd, input=data, capture_output=True, check=True, quiet=quiet)
      File "C:\Users\jakub\anaconda3\envs\Inz_ML\lib\site-packages\graphviz\backend.py", line 183, in run
        raise CalledProcessError(proc.returncode, cmd,
    graphviz.backend.CalledProcessError: Command '['dot', '-Tpng']' returned non-zero exit status 1. [stderr: b'Format: "png" not recognized. Use one of:\r\n']
    
    Process finished with exit code 1