这是我第二次重新学习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)