害怕部署机器学习模型?这里有一篇手把手教程
作者头像
  • 海滨之花
  • 2019-11-21 08:56:58 5

部署机器学习模型并进行预测

本文将指导你如何部署机器学习模型,并在你选择的编程语言中进行预测。无论你偏好使用Python,还是希望通过Java或Kotlin在Android应用程序中实现预测,都有多种途径可供选择。此外,你还可以直接在Web应用中使用该模型。为了简化演示,本文将使用Postman进行说明。

不过,本文不会详细介绍如何将模型部署到实时服务器上,因为这涉及到许多选择。模型将在本地运行,因此无法从其他网络访问。如果你需要将模型部署到AWS或其他云服务上,可以自行搜索相关信息。

以下是本文使用的目录结构:

ML部署: |-- model/ | |-- Train.py |-- app.py

假设你已经通过Anaconda安装了Python,那么大部分必要的库应该已经安装完毕,除了Flask。请在终端中执行以下命令来安装Flask及其扩展:

bash pip install Flask pip install Flask-RESTful

接下来,我们开始编写基本的预测脚本。

制造基本预测脚本

如果你遵循了上述目录结构,现在应打开model/Train.py文件。你需要加载鸢尾花数据集,并使用简单的决策树分类器进行训练。训练完成后,将使用joblib库保存模型,并向用户报告精度分数。

虽然这部分代码相对简单,但这里主要目的是模型部署。以下是整个脚本:

```python from sklearn import datasets from sklearn.tree import DecisionTreeClassifier from sklearn.modelselection import traintestsplit from sklearn.metrics import accuracyscore from sklearn.externals import joblib

def trainmodel(): irisdf = datasets.loadiris() x = irisdf.data y = irisdf.target Xtrain, Xtest, ytrain, ytest = traintestsplit(x, y, testsize=0.25) dt = DecisionTreeClassifier().fit(Xtrain, ytrain) preds = dt.predict(Xtest) accuracy = accuracyscore(y_test, preds) joblib.dump(dt, 'iris-model.model') print('Model Training Finished.ntAccuracy obtained: {}'.format(accuracy)) ```

部署

现在打开app.py文件,并执行一些导入操作。你需要导入Flask、Flask RESTful以及之前定义的训练模型函数和joblib库:

python import os from flask import Flask, jsonify, request from flask_restful import Api, Resource from model.Train import train_model from sklearn.externals import joblib

接着,创建Flask和Api的实例:

python app = Flask(__name__) api = Api(app)

接下来,检查模型是否已经训练完成。如果模型文件不存在,则需要先训练模型。训练完成后,可以通过joblib库加载模型:

python if not os.path.isfile('iris-model.model'): train_model() model = joblib.load('iris-model.model')

现在,声明一个用于处理预测请求的类。Flask RESTful要求此类继承自Resource类。在类中,可以声明get、post等方法。我们将使用post方法接收用户输入的数据,并调用模型进行预测:

```python class MakePrediction(Resource): @staticmethod def post(): posteddata = request.getjson() sepallength = posteddata['sepallength'] sepalwidth = posteddata['sepalwidth'] petallength = posteddata['petallength'] petalwidth = posteddata['petalwidth']

    prediction = model.predict([[sepal_length, sepal_width, petal_length, petal_width]])[0]

    if prediction == 0:
        predicted_class = 'Iris-setosa'
    elif prediction == 1:
        predicted_class = 'Iris-versicolor'
    else:
        predicted_class = 'Iris-virginica'

    return jsonify({
        'Prediction': predicted_class
    })

```

最后,声明一个路由来处理请求:

```python api.add_resource(MakePrediction, '/predict')

if name == 'main': app.run(debug=True) ```

这样,你就完成了整个部署过程。可以通过Postman或其他工具启动模型并进行预测。

启动模型并进行预测

首先,在终端中导航至项目根目录,并执行以下命令启动应用:

bash python app.py

启动后,应用将在本地运行。接下来,使用Postman进行预测:

  1. 设置请求方法为POST。
  2. 输入URL:localhost:5000/predict
  3. 在Body选项卡中选择JSON格式。
  4. 输入一些JSON数据进行预测。

点击发送按钮即可获得预测结果。

总结

希望本文对你有所帮助。如果你只是简单地复制粘贴代码,只需安装所有必需的库,就应该可以继续进行。强烈建议你在自己的数据集和业务场景中实践这些知识。如果你使用Python以外的语言编写应用程序,并且只用Python进行数据和机器学习相关的操作,那么这种方法非常有用。

雷锋网举办的“AI最佳掘金案例年度榜单”也在招募中,欢迎有兴趣的朋友报名参加。

    本文来源:图灵汇
责任编辑: : 海滨之花
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
手把手部署模型害怕机器教程这里学习
    下一篇