使用机器学习数据集构建销售预测Web应用程序( 三 )


你可以在本文中查看适用于你的OS和Python版本的命令:Python venv:
接下来 , 我们将通过运行以下命令激活虚拟环境: source server/bin/activate
完成后 , 我们需要安装Flask pip软件包: pip install -U Flask
接下来 , 使用你喜欢的文本编辑器在服务器文件夹中创建一个名为“app.py”的文件 , 并添加以下代码以创建基本的API:
from flask import Flask, jsonify, make_response, request, abortapp = Flask(__name__)@app.route("/")def hello():return "Hello World!"if __name__ == "__main__":app.run()现在打开终端并运行python3 app.py以启动服务器 。 这将主要在5000端口上启动服务器 。 为了测试API , 请在浏览器中打开此链接:http://localhost:5000/
你应该在浏览器中打印出Hello World 。 如果不是 , 则在启动API时检查API是否在其他端口上运行或在终端上打印错误 。
我们将调用POST API , 因此最好在继续进行之前安装Postman工具 。 使用此工具将向服务器发送POST请求 。
接下来 , 我们需要使用以下命令安装catboost , pandas和Flask-Cors pip软件包:
pip install catboost pandas Flask-Cors
接下来 , 将我们在第1部分末尾下载的经过训练的模型的pickle文件(finalized_model.sav)复制到服务器文件夹中 。
现在 , 使用以下代码更新 app.py:
from flask import Flask, jsonify, make_response, request, abortimport pandas as pdimport catboostimport picklefrom flask_cors import CORS,cross_originmodel = pickle.load(open( "finalized_model.sav", "rb"))app = Flask(__name__)app.config['CORS_HEADERS'] = 'Content-Type'cors = CORS(app)@app.errorhandler(404)def not_found(error):return make_response(jsonify({'error': 'Not found'}), 404)@app.route("/")def hello():return "Hello World!"@app.route("/get_prediction", methods=['POST','OPTIONS'])@cross_origin()def get_prediction():if not request.json:abort(400)df = pd.DataFrame(request.json, index=[0])cols=["CONSOLE","RATING","CRITICS_POINTS","CATEGORY","YEAR","PUBLISHER","USER_POINTS"]df = df[cols]return jsonify({'result': model.predict(df)[0]}), 201if __name__ == "__main__":app.run()在第6行中 , 我们将训练后的模型导入到我们的python文件中 。
在第10行 , 我们初始化CORS模块以允许来自客户端API调用的请求 。
在第11行 , 我们定义了一个错误处理程序 , 如果从服务器访问了任何未处理的异常或未定义的路径 , 它将发送错误响应 。
对我们来说 , 主要的兴趣点是从第19行定义的get_prediction POST API 。 get_prediction方法是我们从客户端获取数据并提供响应的销售预测 。
在第24行 , 我们将来自API请求的数据转换为pandas数据框 。 现在 , 我们的模型期望列以特定顺序提供正确的响应 。 因此 , 在第25行中 , 我们指定列顺序 。 在接下来的步骤中 , 以所需顺序重新排列列 。
在第27行 , model.predict用于从模型中获取预测 , 并将其作为响应传递给客户端 。 在这一步 , 我们准备好在本地使用该API 。 我们可以通过发送POST-API调用来测试Postman客户端中的API , 如截图所示:
使用机器学习数据集构建销售预测Web应用程序文章插图
你可以在上述请求的正文部分中添加一个JSON示例 , 可以在代码Github-gist中找到 。

确保在主体和主体类型中选择raw和JSON选项(如屏幕截图所示) , 并在请求类型中选择POST 。
如果在此步骤之前一切正常 , 那么恭喜你 , 你现在有了一个后端API , 该API可根据输入参数根据经过训练的模型进行预测 。


推荐阅读