sklearn 出现 cannot import name 'plot_tree' 与 module 'sklearn.tree' has no attribute 'plot_tree' 问题解决
使用 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-learn 的 0.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' 问题解决相关推荐
- python module ‘mitmproxy.proxy‘ has no attribute ‘config‘问题解决
python module 'mitmproxy.proxy' has no attribute 'config'问题解决 原因是mitmproxy的版本太高,目前7.x的版本已经不是这样解决了,使用 ...
- AttributeError: module ‘keras.backend‘ has no attribute ‘get_session‘问题解决
问题: Traceback (most recent call last):File "video.py", line 9, in <module>ssd = SSD( ...
- 成功解决SyntaxError: import * only allowed at module level
成功解决SyntaxError: import * only allowed at module level 目录 解决问题 解决思路 解决方法 解决问题 解决思路 语法错误:只允许在模块级导入* 解 ...
- 完美解决SyntaxError: import * only allowed at module level
完美解决SyntaxError: import * only allowed at module level 文章目录 报错问题 解决方法 PS 报错问题 之前在工作中遇到过这个坑,记录一下问题以及解 ...
- 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 ...
- python爬虫执行scrapy crawl demo出现: import win32api ModuleNotFoundError: No module named 'win32api'错误
执行: >scrapy crawl demo 可能会出现这个错误: import win32api ModuleNotFoundError: No module named 'win32api' ...
- python3 import execjs ModuleNotFoundError: No module named ‘execjs‘
import execjs ModuleNotFoundError: No module named 'execjs' 解决办法 >pip install PyExecJS Looking in ...
- 使用conda报错:from conda.cli import main ModuleNotFoundError: No module named conda
使用conda报错:from conda.cli import main ModuleNotFoundError: No module named 'conda' 文章目录: 1 错误出现原因 2 解 ...
- 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 . ...
最新文章
- AdvancedEAST笔记
- C++ Primer 5th笔记(chap 15 OOP)继承的构造函数容器
- HTML页面之间跳转与传值(JS代码)
- 大数据之-Hadoop源码编译_源码编译的意义---大数据之hadoop工作笔记0044
- thinkphp实现动态下拉菜单(补充 设置默认值)
- 【MySQL】通信协议
- BSP和JSP里的UI元素ID生成逻辑 1
- 保存图片命令到指定路径_一招轻松合并文件——openall命令介绍
- xos虚拟系统 代理服务器,VMware宝典:一手缔造超级虚拟网络
- Linux·串口编程
- Label Consistent Matrix Factorization Hashingfor Large-Scale Cross-Modal Similarity Search(LC)--文献翻译
- 在python中if是什么意思_python中为什么需要使用“if
- java-时间间隔类period类和Duration类
- windows10 共享视频到 Ipad
- linux log4cxx 静态库,log4cxx的个人实践
- org.apache.thrift.transport.TTransportException: GSS initiate failed
- java之CSV大批量数据入库
- keras IMDB数据集学习
- Https单向认证和双向认证
- MySQL 占用过高CPU时的优化手段