使用 scikit-learn.tree 包中的 plot_tree 绘制决策树的问题

  • 问题: ImportError: cannot import name 'plot_tree'
  • 或 module 'sklearn.tree' has no attribute 'plot_tree'
    • 问题原因: scikit-learn 的版本
      • 查看 scikit-learn 库版本号
    • 解决问题
    • 注意事项

问题: ImportError: cannot import name ‘plot_tree’

或 module ‘sklearn.tree’ has no attribute ‘plot_tree’

在 scikit-learn 官方文档 关于决策树模块(tree)的示例中用到了决策树绘制函数 plot_tree,绘制决策树的示例代码(1.10.1节)如下:

tree.plot_tree(clf.fit(iris.data, iris.target))

导入 plot_tree 函数的 示例代码 如下:

from sklearn.tree import DecisionTreeClassifier, plot_tree

笔者在执行以上代码时就会报错。
由于在官方文档中并没有对 plot_tree 函数的使用条件进行特别的说明,笔者在这个地方被坑了很多时间,下面总结一下这个问题的解决经验。

问题原因: scikit-learn 的版本

从 github 上 scikit-learn 项目的 issue 中得知:plot_tree 函数是在 scikit-learn0.21 版本加入的,所以需要 0.21 之后的的版本才能使用这个函数,如果环境中的 scikit-learn 低于这个版本,在导入或调用 plot_tree 函数时自然就会报错了。

查看 scikit-learn 库版本号

要查看当前环境某个模块的版本号可打印出该模块的 version 属性:

import sklearn
print(sklearn.__version)0.20

解决问题

更新所使用的环境中的 scikit-learn 库:

  • Anaconda 环境
# 激活需要的虚拟环境
conda activate 虚拟环境名称
# 使用 conda 更新
conda update scikit-learn
# 也可以使用 pip 更新
pip install --upgrade scikit-learn

执行以上命令完成升级后,可再次查看 scikit-learn 的版本是否达到要求,如果依然不合要求,可尝试修改更新源后再次更新。
更新源相关指令如下:

# 显示镜像源:
conda config --show channelconda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
# for legacy win-64
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/peterjc123/

注意事项

  • 使用 Anaconda 虚拟环境时,应注意是否选择了正确的虚拟环境。
  • plot_tree 使用了 matplotlib 模块绘图,如果环境中没有则需要安装此模块。

sklearn 出现 cannot import name 'plot_tree' 与 module 'sklearn.tree' has no attribute 'plot_tree' 问题解决相关推荐

  1. python module ‘mitmproxy.proxy‘ has no attribute ‘config‘问题解决

    python module 'mitmproxy.proxy' has no attribute 'config'问题解决 原因是mitmproxy的版本太高,目前7.x的版本已经不是这样解决了,使用 ...

  2. AttributeError: module ‘keras.backend‘ has no attribute ‘get_session‘问题解决

    问题: Traceback (most recent call last):File "video.py", line 9, in <module>ssd = SSD( ...

  3. 成功解决SyntaxError: import * only allowed at module level

    成功解决SyntaxError: import * only allowed at module level 目录 解决问题 解决思路 解决方法 解决问题 解决思路 语法错误:只允许在模块级导入* 解 ...

  4. 完美解决SyntaxError: import * only allowed at module level

    完美解决SyntaxError: import * only allowed at module level 文章目录 报错问题 解决方法 PS 报错问题 之前在工作中遇到过这个坑,记录一下问题以及解 ...

  5. ERROR: from PIL import Image ImportError: No module named PIL

    ERROR: from PIL import Image ImportError: No module named PIL 到 http://www.pythonware.com/products/p ...

  6. python爬虫执行scrapy crawl demo出现: import win32api ModuleNotFoundError: No module named 'win32api'错误

    执行: >scrapy crawl demo 可能会出现这个错误: import win32api ModuleNotFoundError: No module named 'win32api' ...

  7. python3 import execjs ModuleNotFoundError: No module named ‘execjs‘

    import execjs ModuleNotFoundError: No module named 'execjs' 解决办法 >pip install PyExecJS Looking in ...

  8. 使用conda报错:from conda.cli import main ModuleNotFoundError: No module named conda

    使用conda报错:from conda.cli import main ModuleNotFoundError: No module named 'conda' 文章目录: 1 错误出现原因 2 解 ...

  9. python import from class_Python: import vs from (module) import function(class) 的理解

    Python: Import vs From (module) import function(class) 本文涉及的 Python 基本概念: Module Class import from . ...

最新文章

  1. AdvancedEAST笔记
  2. C++ Primer 5th笔记(chap 15 OOP)继承的构造函数容器
  3. HTML页面之间跳转与传值(JS代码)
  4. 大数据之-Hadoop源码编译_源码编译的意义---大数据之hadoop工作笔记0044
  5. thinkphp实现动态下拉菜单(补充 设置默认值)
  6. 【MySQL】通信协议
  7. BSP和JSP里的UI元素ID生成逻辑 1
  8. 保存图片命令到指定路径_一招轻松合并文件——openall命令介绍
  9. xos虚拟系统 代理服务器,VMware宝典:一手缔造超级虚拟网络
  10. Linux·串口编程
  11. Label Consistent Matrix Factorization Hashingfor Large-Scale Cross-Modal Similarity Search(LC)--文献翻译
  12. 在python中if是什么意思_python中为什么需要使用“if
  13. java-时间间隔类period类和Duration类
  14. windows10 共享视频到 Ipad
  15. linux log4cxx 静态库,log4cxx的个人实践
  16. org.apache.thrift.transport.TTransportException: GSS initiate failed
  17. java之CSV大批量数据入库
  18. keras IMDB数据集学习
  19. Https单向认证和双向认证
  20. MySQL 占用过高CPU时的优化手段

热门文章

  1. 树莓派4B供电不足导致相机采图死机输入死机的解决
  2. 券商集合理财(及与公募基金的区别)
  3. python 用题库自动答题器_python实现自动刷题
  4. 图片加载库Coil详解
  5. 利用OleDbParameter实现ACCESS信息的有条件读取
  6. 第27章 登录/注销的定义实现
  7. CUDA AND NVIDIA-DRIVER INSTALL
  8. redis的五种常用数据结构、Pub/Sub数据结构、Stream数据结构
  9. 使用InfoZip压缩解压zip文件
  10. u盘安装linux卡logo,求助:U盘启动卡在LOGO