首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ModuleNotFoundError:没有名为“sklearn.tree.tree”的模块

ModuleNotFoundError:没有名为“sklearn.tree.tree”的模块
EN

Stack Overflow用户
提问于 2021-02-03 14:39:59
回答 3查看 6K关注 0票数 1

我正在尝试学习如何使用本教程创建机器学习API,但是,在下面的python app.py中,当我键入命令python app.py时会出现以下错误

代码语言:javascript
复制
Traceback (most recent call last):   
File "C:\Users\Breno\Desktop\flask-api\app.py", line 24, in <module>
        model = p.load(open(modelfile, 'rb'))
ModuleNotFoundError: No module named 'sklearn.tree.tree'

我的代码:

代码语言:javascript
复制
from flask import Flask, request, redirect, url_for, flash, jsonify
import numpy as np
import pickle as p
import pandas as pd
import json
#from sklearn.tree import DecisionTreeClassifier

app = Flask(__name__)


@app.route('/api/', methods=['POST'])
def makecalc():
    j_data = request.get_json()

    prediction = np.array2string(model.predict(j_data))

    return jsonify(prediction)


if __name__ == '__main__':

    modelfile = 'models/final_prediction.pickle'    

    model = p.load(open(modelfile, 'rb'))

    app.run(debug=True,host='0.0.0.0')

有人能帮帮我吗?

EN

回答 3

Stack Overflow用户

发布于 2021-03-30 18:42:08

Pickles不一定兼容所有的scikit-学习版本,因此这种行为是预期的(并且不支持用例)。有关更多细节,请参见持久化。用果酱代替泡菜。举个例子:

代码语言:javascript
复制
>>> from sklearn import svm
>>> from sklearn import datasets
>>> clf = svm.SVC()
>>> X, y= datasets.load_iris(return_X_y=True)
>>> clf.fit(X, y)
SVC()

>>> from joblib import dump, load
>>> dump(clf, open('filename.joblib','wb'))
>>> clf2 = load(open('filename.joblib','rb'))
>>> clf2.predict(X[0:1])
array([0])
>>> y[0]
0
票数 2
EN

Stack Overflow用户

发布于 2021-10-05 15:43:55

对于任何遇到这个问题的人(可能是很久以前编写的代码),sklearn.tree.tree现在处于sklearn.tree之下(与v0.24一样)。从导入错误警告中可以看出这一点:

代码语言:javascript
复制
from sklearn.tree.tree import BaseDecisionTree
/usr/local/lib/python3.7/dist-packages/sklearn/utils/deprecation.py:144: FutureWarning: The sklearn.tree.tree module is  deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.tree. Anything that cannot be imported from sklearn.tree is now part of the private API.
  warnings.warn(message, FutureWarning)

相反,请使用:

代码语言:javascript
复制
from sklearn.tree import BaseDecisionTree
票数 2
EN

Stack Overflow用户

发布于 2021-02-03 15:20:44

问题在于sklearn的版本。模块sklearn.tree.tree将从0.24版本中删除。很可能,您的模型是用旧版本生成的。试着安装一个旧版本的sklearn:

代码语言:javascript
复制
pip uninstall scikit-learn
pip install scikit-learn==0.20.4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66029751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档