[英]import Porter error ModuleNotFoundError: No module named 'sklearn.tree.tree'
[英]ModuleNotFoundError: No module named 'sklearn.tree.tree'
我正在尝试学习如何使用 Flask 创建机器学习 API,但是,按照本教程,当我键入命令python app.py
时出现以下错误:
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'
我的代码:
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')
有人可以帮我吗?
泡菜不一定在 scikit-learn 版本之间兼容,因此这种行为是预期的(并且不支持用例)。 有关更多详细信息,请参阅https://scikit-learn.org/dev/modules/model_persistence.html#model-persistence 。 用 joblib 替换 pickle。 例如:
>>> 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
对于遇到此问题的任何人(可能处理很久以前编写的代码), sklearn.tree.tree
现在位于sklearn.tree
下(从v0.24
)。 从导入错误警告中可以看出:
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)
相反,使用:
from sklearn.tree import BaseDecisionTree
问题在于sklearn
的版本。 模块sklearn.tree.tree
自版本0.24
以来已被删除。 很可能,您的 model 是使用旧版本生成的。 尝试安装旧版本的 sklearn:
pip uninstall scikit-learn
pip install scikit-learn==0.20.4
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.