我正在尝试学习如何使用Flask创建机器学习API,但是,在this tutorial之后,键入命令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')
有人能帮我吗
pickle不一定在scikit学习版本之间兼容,因此这种行为是预期的(并且用例不受支持)。有关更多详细信息,请参见https://scikit-learn.org/dev/modules/model_persistence.html#model-persistence。用joblib替换pickle。 举例来说:
对于任何遇到这个问题的人(可能是处理很久以前编写的代码),
sklearn.tree.tree
现在在sklearn.tree
下(从v0.24
)。这可以从导入错误警告中看到:相反,请使用:
问题在于
sklearn
的版本。模块sklearn.tree.tree
从版本0.24
起被删除。最有可能的是,您的模型是使用旧版本生成的。尝试安装旧版本的sklearn:相关问题 更多 >
编程相关推荐