• 学习记录639@python机器学习模型部署与访问实战-基于Flask


    概述

    本文基于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]] 测试
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    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()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    测试

    在app.py中启动项目后,postman中访问这个路径(http://localhost:5000/predict)并传递需要预测的样本数据。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    实际使用中,flask项目部署在云上,其他项目比如java会远程访问这个项目的特定模型,然后收到返回的值继续进行其他操作,比如是否拒绝这个样本或者发送短信等等。

  • 相关阅读:
    酷快讯:九个让你在熊市打脸“加密仇恨者”的强力反驳
    Vue3通透教程【十七】Vite构建TS版本Vue项目
    Golang格式化输出
    React 中 useEffect
    剑指offer 40. 数组中出现次数超过一半的数字
    Redis学习笔记——缓存更新策略
    Leetcode 33 搜索旋转排序数组
    软件配置管理计划
    Java调用tess4j完成 OCR 文字识别
    【Go ~ 0到1 】 第四天 6月30 defer,结构体,方法
  • 原文地址:https://blog.csdn.net/weixin_44663675/article/details/126709729