机器学习模型集成到Web应用

YouTube通过机器学习技术个性化推荐内容,根据用户的观看历史推荐新内容。这有助于他们做出更好的决策,并了解用户的浏览行为。也可以创建这样的应用程序,输入数据后,模型预测输出。将模型集成到应用程序中,不仅可以展示机器学习知识,还可以展示应用开发技能。

创建机器学习模型

使用线性回归来预测车辆的二氧化碳排放量。数据集有很多列,但只使用其中一些作为特征。最后一列代表类别标签。数据集有1067行和4列。使用sklearn内置的LinearRegression()类来构建回归模型。以下代码帮助使用Pickle模块保存模型。ML模型被保存为“model.pkl”。将在后面使用这个文件来预测当从Web应用提供新的输入数据时的输出。

Pickle:Python的pickle模块用于序列化和反序列化Python对象结构。将任何类型的Python对象(列表、字典等)转换为字节流(0和1)的过程称为pickle或序列化或展平或编组。可以通过称为unpickle的过程将字节流(通过pickle生成)转换回Python对象。

import pandas as pd from sklearn.linear_model import LinearRegression import pickle df = pd.read_csv("FuelConsumption.csv") cdf = df[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB','CO2EMISSIONS']] x = cdf.iloc[:, :3] y = cdf.iloc[:, -1] regressor = LinearRegression() regressor.fit(x, y) pickle.dump(regressor, open('model.pkl','wb'))

开发Flask Web应用并集成模型

现在已经拥有模型,将开始使用Flask开发Web应用。如果刚开始学习Flask,可以在这里阅读相关教程。

可以使用‘pip install flask’命令。使用PyCharm IDE开发Flask应用。在PyCharm中轻松安装库,请按照这些步骤操作。

import numpy as np from flask import Flask, render_template, request import pickle app = Flask(__name__) model = pickle.load(open('model.pkl', 'rb'))

路由指的是应用的URL模式(例如myapp.com/home或myapp.com/about)。@app.route("/")是一个Python装饰器,Flask提供这个装饰器来轻松地将URL分配给应用中的函数。

@app.route('/') def home(): return render_template('index.html')

创建一个新的应用路由(‘/predict’),它读取‘index.html’表单中的输入,并在点击预测按钮时,使用render_template输出结果。

@app.route('/predict', methods=['POST']) def predict(): int_features = [float(x) for x in request.form.values()] final_features = [np.array(int_features)] prediction = model.predict(final_features) output = round(prediction[0], 2) return render_template('index.html', prediction_text='CO2排放量为:{}'.format(output))

启动Flask服务器

if __name__ == "__main__": app.run(debug=True) app.run()被调用,Web应用在localhost:5000上本地托管。“debug=True”确保不需要每次更改后都运行应用,可以在服务器仍在运行时刷新网页以查看更改。

Web应用部署到Heroku

现在应用程序已在本地服务器上成功测试,是时候将应用程序部署到Heroku云平台了。部署任何Flask Web应用到Heroku有两个先决条件。

Procfile指定了Heroku应用启动时执行的命令。在工作目录中打开一个名为Procfile的新文件(没有任何扩展名),并粘贴以下内容。

web: gunicorn app:app

requirements.txt文件将包含Flask应用的所有依赖项。打开一个新文件,并将其命名为“requirements.txt”。按照以下方式列出所有要求:

Flask==1.1.1 gunicorn==20.0.4 pandas==0.25.2 scikit-learn==0.23.2 numpy==1.17.3 pickle4==0.0.1 sklearn==0.0

或者,也可以使用以下命令在工作目录的终端中创建此文件:

pip freeze > requirements.txt

要了解如何创建一个新的仓库,请点击这里。如果想了解如何将文件上传到仓库,可以在这里获得帮助。仓库应该看起来像这样,一旦所有文件都上传了。

注意:仓库中的所有这些文件应该在工作目录级别,而不是在另一个文件夹中。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485