概述
本文基于Flask web框架,搭建机器学习模型部署与使用的简单案例。传递数据用json格式。
Flask就是python中的一个web框架,和springboot类似,但是这个框架真的不好用,毕竟python不是专门写web的。
需要先pip install flask,且要用专业版本pycharm创建flask项目
创建flask项目及本案例整体结构
创捷flask项目
项目结构
app.py文件是外界访问的入口,有java基础的应该很容易看懂以上内容。
models文件夹中的test.py中是机器学习模型,运行这个文件就可以保存这个模型,模型文件保存在fitedModels文件夹中,待app.py使用。
test.py
import joblib #注意先安装 pip install joblib
from sklearn.datasets import load_iris
from sklearn import model_selection
from xgboost import XGBClassifier
#载入鸢尾花数据集
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y,test_size=0.25, random_state=1234)
clf=XGBClassifier().fit(X_train, y_train)
joblib.dump(clf, './fitedModels/XGBClassifierModel.pkl') #保存在当前文件目录下的fitedModels目录下
# 待会拿这个测试[[5.1,3.5,1.4,0.2],[4.9,3,1.4,0.2]] 测试
app.py
from flask import Flask,request,jsonify
app = Flask(__name__)
import joblib #注意先安装 pip install joblib
@app.route('/predict',methods=["POST"])
def predict(): # put application's code here
data = request.get_json(force=True)
# 加载XGBClassifierModel.pkl
model = joblib.load('./models/fitedModels/XGBClassifierModel.pkl')
# 预测
predict = model.predict(data)
info = {'result': str(predict)}
return jsonify(info) # 返回结果
if __name__ == '__main__':
app.run()
测试
在app.py中启动项目后,postman中访问这个路径(http://localhost:5000/predict)并传递需要预测的样本数据。
实际使用中,flask项目部署在云上,其他项目比如java会远程访问这个项目的特定模型,然后收到返回的值继续进行其他操作,比如是否拒绝这个样本或者发送短信等等。