繁体   English   中英

导入错误:无法从“sklearn.tree”导入名称“tree”

[英]Import Error: cannot import name 'tree' from 'sklearn.tree'

我已经是第二次重修 Python 的第二天了! 我正在使用以下代码在 Python 中编写关于 ML 的教程:

import sklearn.tree
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import tree

music_data = pd.read_csv('music.csv')
x = music_data.drop(columns=['genre'])
y = music_data['genre']

model = DecisionTreeClassifier()
model.fit(x,y)

tree.export_graphviz(model, out_file='music-recommender.dot',
                feature_names=['age','gender'],
                class_names= sorted(y.unique()),
                label='all',
                rounded=True,
                filled=True)

我不断收到以下错误:

ImportError                               Traceback (most recent call last)
 ~\AppData\Local\Temp/ipykernel_13088/3820271611.py in <module>
      2 import pandas as pd
      3 from sklearn.tree import DecisionTreeClassifier
----> 4 from sklearn.tree import tree
      5 
      6 music_data = pd.read_csv('music.csv')

ImportError: cannot import name 'tree' from 'sklearn.tree' (C:\Anaconda\lib\site-packages\sklearn\tree\__init__.py)

我试图在网上找到一个解决方案,但我不认为它是 Python/Anaconda 的版本,因为我实际上只是安装了两者。 我也不认为这是sklearn.tree ,因为我能够导入DecisionClassifer

正如这个答案所示,您正在查看一些较旧的代码; 这始终是编程的风险。 但是,您还需要了解有关代码的另一件事。

首先, scikit-learn包含几个模块,你需要的几乎所有东西都在其中一个中。 根据我的经验,大多数人会导入这样的东西:

from sklearn.tree import DecisionTreeRegressor   # A regressor class.
from sklearn.tree import plot_tree               # A helpful function.
from sklearn.metrics import mean_squared_error   # An evaluation function.

看起来教程需要类似于plot_tree()的东西。 这个新功能比旧的 Graphviz 可视化更容易使用。 因此,除非您出于某些原因确实需要 DOT 文件,否则您应该可以这样做:

from sklearn.tree import plot_tree

sklearn.tree.plot_tree(model)

底线:该材料中可能会有更多破碎的东西。 因此,如果我是您,我要么使用与您正在使用的任何材料相匹配的sklearn版本创建一个新环境……要么放弃该材料并寻找更新的东西。

from sklearn.tree import tree看起来不对。 你的意思是from sklearn import tree

根据官方Scikit Learn 决策树文档,您真的不需要太多的导入。

它可以简单地完成如下:

from sklearn import tree
import pandas as pd

music_data = pd.read_csv('music.csv')
X = music_data.drop(columns=['genre'])
y = music_data['genre']
model = tree.DecisionTreeClassifier()
model.fit(X,y)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM