在 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
函数的使用条件进行特别的说明,笔者在这个地方被坑了很多时间,下面总结一下这个问题的解决经验。
从 github 上 scikit-learn 项目的 issue 中得知:plot_tree
函数是在 scikit-learn 的 0.21
版本加入的,所以需要 0.21
之后的的版本才能使用这个函数,如果环境中的 scikit-learn 低于这个版本,在导入或调用 plot_tree
函数时自然就会报错了。
要查看当前环境某个模块的版本号可打印出该模块的 version 属性:
import sklearn
print(sklearn.__version)
0.20
更新所使用的环境中的 scikit-learn 库:
# 激活需要的虚拟环境
conda activate 虚拟环境名称
# 使用 conda 更新
conda update scikit-learn
# 也可以使用 pip 更新
pip install --upgrade scikit-learn
执行以上命令完成升级后,可再次查看 scikit-learn 的版本是否达到要求,如果依然不合要求,可尝试修改更新源后再次更新。
更新源相关指令如下:# 显示镜像源: conda config --show channel conda 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/