python - ModuleNotFoundError: No module named 'sklearn.tree.tree'
问题描述
I'm trying to learn how to create a machine learning API with Flask, however, following this tutorial, the following error appears when I type the command 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'
My code:
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')
Could someone help me please?
解决方案
Pickles 不一定在 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
推荐阅读
- c# - 在 ASP.Net 中实现和生成多个动态 SiteMapNode
- json - 使用 `curl` 的 API 调用在 Swift 中不起作用
- jquery - 另一个表单的另一个 ajax 函数不起作用
- css - 如何显示行的交替红色和绿色?
- python - 如何获得方向
在tkinter? - c - 为什么 scanf_s 不能在 Visual Studio 以外的任何地方工作?
- c++ - r 值引用是如何在这里传递的?
- javascript - 为什么我的搜索查询结果不佳?
- c++ - 为什么 clang 不能将元组的构造限制为显式?
- python - 为什么arange函数的pdf具有正态分布?