在本文中,将探讨如何将机器学习模型部署到网页应用中,使其能够被广泛使用。部署机器学习模型是构建模型的主要目的之一。虽然模型的准确率是一个重要的性能指标,但最终目标是使模型对用户有用。因此,需要将模型部署到一个易于用户访问的平台。
首先,需要构建一个机器学习模型,这里使用的是TensorFlow框架。然后,将模型转换为TensorFlow.js格式,以便在浏览器中使用。接下来,将构建一个基本的网页应用,最后将其部署到云端,这里使用的是Netlify平台。
本文中将构建一个基于TensorFlow的模型,用于判断患者是否患有心脏病。数据集可以从Kaggle下载,它源自UCI机器学习库,包含13个特征属性和1个标签列。以下是构建模型的代码示例:
import tensorflow as tf
from sklearn.model_selection import train_test_split
import pandas as pd
df = pd.read_csv("heart_cleveland_upload.csv", sep=",")
X = df.iloc[:,0:13]
Y = df.iloc[:,13]
x_train,x_test,y_train,y_test=train_test_split(X, Y, test_size=0.3, random_state=1)
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(8, input_shape=(13,), activation=tf.nn.relu))
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Dense(1, activation=tf.nn.sigmoid))
model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["accuracy"])
history = model.fit(x=x_train, y=y_train, epochs=150, validation_data=(x_test, y_test), verbose=0)
val_loss, val_acc = model.evaluate(x=x_test, y=y_test)
themodel = "./heart_ann.h5"
model.save(themodel)
以上代码将模型保存为HDF5格式。接下来,需要将模型转换为TensorFlow.js可以使用的格式。
TensorFlow.js是一个JavaScript库,允许在浏览器中直接使用机器学习模型。要使用TensorFlow.js,需要将H5模型转换为JSON和二进制格式。这可以通过tensorflowjs转换器轻松完成。首先,需要安装tensorflowjs:
pip install tensorflowjs
然后,使用以下命令转换模型:
!tensorflowjs_converter --input_format=keras {themodel} ./
这将在当前目录下生成一个.json文件和一个.bin文件,这两个文件将用于网页应用。
需要一个基本的HTML输入表单来获取用户输入。在JavaScript中,将执行推理/预测。需要在
标签中包含tensorflow.js:
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest"></script>
然后,添加脚本来收集用户输入,并使用model.predict(input)函数预测结果。
<script>
async function run() {
event.preventDefault();
const MODEL_URL = "./heart-model.json";
const model = await tf.loadLayersModel(MODEL_URL);
console.log("model loaded");
// 收集用户输入并构建输入张量
const input = tf.tensor2d([
[age, sex, cp, trestbps, chol, fbs, restecg, thalach, exang, oldpeak, slope, ca, thal],
]);
const result = model.predict(input).arraySync()[0];
var rslt = "<p>The result:</p>";
if (result >= 0.5) {
rslt +=
"<div class='alert alert-danger' role='alert'><strong>Positive</strong> ";
} else {
rslt +=
"<div class='alert alert-success' role='alert'><strong>Negative</strong> ";
}
const prsn = result * 100;
rslt += "Probability: " + prsn.toFixed(2) + "% </div>";
document.getElementById("rslt-text").innerHTML = rslt;
}
</script>
在"Analyze"按钮上,调用run()函数来触发点击时的预测。
<button class="w-100 btn btn-primary btn-lg" onclick="run()" type="submit">
Analyze <i class="bi bi-search"></i>
</button>
Netlify是一个平台,可以在这里快速构建并部署模型到网页应用中。它易于使用且免费。可以在这里访问并创建一个Netlify账户。
部署到Netlify非常简单。只需拖放文件即可。模型将在浏览器中准备好使用。
在Netlify账户中,打开Sites菜单,然后拖放文件到标记有红色箭头的占位符中。文件应该在一个文件夹中,包含index.html文件以及转换后的模型JSON和bin文件。
一旦文件成功上传,将看到带有随机域名的通知。也可以通过点击Domain settings按钮更改为自定义名称。
将看到这个屏幕,点击Options按钮,然后点击Edit site name。输入喜欢的域名,然后保存更改。完成。现在可以通过给定的URL访问模型。