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,可以在这里阅读相关教程。
可以使用‘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))
if __name__ == "__main__": app.run(debug=True) app.run()被调用,Web应用在localhost:5000上本地托管。“debug=True”确保不需要每次更改后都运行应用,可以在服务器仍在运行时刷新网页以查看更改。
现在应用程序已在本地服务器上成功测试,是时候将应用程序部署到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
要了解如何创建一个新的仓库,请点击这里。如果想了解如何将文件上传到仓库,可以在这里获得帮助。仓库应该看起来像这样,一旦所有文件都上传了。
注意:仓库中的所有这些文件应该在工作目录级别,而不是在另一个文件夹中。