解决sklearn.tree导入tree报cannot import name 'tree'错误
报错原因
该报错与Python、Anaconda安装状态、版本兼容性无关,核心是导入写法错误:
- 你参考的教程使用了过时的错误导入逻辑,这类写法一般是scikit-learn 0.x极早期版本的内部结构,早已在正式版本迭代中移除,不属于当前公开支持的API用法。当前正式发布的scikit-learn版本中,
sklearn.tree模块下不存在名为tree的可导入对象,因此执行from sklearn.tree import tree时会触发导入错误。 - 你可以正常导入
DecisionTreeClassifier,已经证明sklearn.tree模块本身安装正常、可正常调用,不存在模块损坏问题。 - 代码中用到的
export_graphviz方法本身是直接挂载在sklearn.tree模块下的公开方法,不需要导入不存在的tree子对象即可调用。
修复方法
- 删除错误导入行:
from sklearn.tree import tree - 调整
export_graphviz的调用方式,直接从sklearn.tree导入该方法即可,修正后的完整可运行代码如下:
import pandas as pd from sklearn.tree import DecisionTreeClassifier, export_graphviz music_data = pd.read_csv('music.csv') x = music_data.drop(columns=['genre']) y = music_data['genre'] model = DecisionTreeClassifier() model.fit(x,y) export_graphviz(model, out_file='music-recommender.dot', feature_names=['age','gender'], class_names= sorted(y.unique()), label='all', rounded=True, filled=True)
运行修改后的代码即可正常生成决策树可视化的.dot文件,不会再触发导入错误。
内容的提问来源于stack exchange,提问作者rgd90
相关产品推荐
相关产品推荐

