导入错误:无法从"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)
~AppDataLocalTemp/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:Anacondalibsite-packagessklearntree__init__.py)

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

正如答案所示,您正在查看一些较旧的代码;这总是编程的一个风险。但是关于你的代码,还有一件事你需要知道。

首先,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)

最新更新