机器学习模型部署与网页应用开发

在本文中,将探讨如何将机器学习模型部署到网页应用中,使其能够被广泛使用。部署机器学习模型是构建模型的主要目的之一。虽然模型的准确率是一个重要的性能指标,但最终目标是使模型对用户有用。因此,需要将模型部署到一个易于用户访问的平台。

所需步骤

首先,需要构建一个机器学习模型,这里使用的是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访问模型。

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