执行了以下代码
from flask import Flask, request, jsonify, make_response
from flask_restplus import Api, Resource, fields
from sklearn.externals import joblib
import numpy as np
import sys
flask_app = Flask(__name__)
app = Api(app = flask_app,
version = "1.0",
title = "ML React App",
description = "Predict results using a trained model")
name_space = app.namespace('prediction', description='Prediction APIs')
model = app.model('Prediction params',
{'Recency': fields.Float(required = True,
description="Recency Value",
help="Recency Value cannot be blank"),
'Frequency': fields.Float(required = True,
description="Frequency Value",
help="Frequency Value cannot be blank"),
'Monetary': fields.Float(required = True,
description="Monetary Value",
help="Monetary Value cannot be blank"),
})
classifier = joblib.load('classifier.joblib')
@name_space.route("/")
class MainClass(Resource):
def options(self):
response = make_response()
response.headers.add("Access-Control-Allow-Origin", "*")
response.headers.add('Access-Control-Allow-Headers', "*")
response.headers.add('Access-Control-Allow-Methods', "*")
return response
@app.expect(model)
def post(self):
try:
formData = request.json
data = [val for val in formData.values()]
prediction = classifier.predict(np.array(data).reshape(1, -1))
types = { 0: "Loyal", 1: "NotLoyal"}
response = jsonify({
"statusCode": 200,
"status": "Prediction made",
"result": "The type of Loyalty is: " + types[prediction[0]]
})
response.headers.add('Access-Control-Allow-Origin', '*')
return response
except Exception as error:
return jsonify({
"statusCode": 500,
"status": "Could not make prediction",
"error": str(error)
})
收到以下错误。
错误:导入“app”时引发ImportError:
回溯(最近的最后一次调用):
文件“d:\dilipan\clg\proj\ml-reacte-app-template-master\service\venv\lib\site-packages\flask\cli.py”,第240行,在locate_app
导入(module_name)
文件“d:\dilipan\clg\proj\ml-reacte-app-template-master\service\venv\lib\site-packages\sklearn.externals”,第3行,在从sklearn.externals导入作业库
两个月前,我在另一台pc上执行了同样的操作,运行良好。
无法从sklearn.externals导入joblib
任何一位都不胜感激。 提前谢谢你。
您可以直接导入joblib而不是导入sklearn.externals,因为它在最新版本的scikitlearn中已被弃用,并且joblib可以直接导入-
import joblib