开发步骤 2 - 构建 Web 应用程序并集成模型

Step2.1 导入库

import streamlit as stimport numpy as npimport pandas as pdimport joblib

stremlit 是一个 Python 库,可以轻松地为机器学习和数据科学项目创建和共享自定义 Web 应用程序。
numpy 是用于数值计算的基本 Python 库。它提供对大型多维数组和矩阵的支持,以及一组数学函数来有效地对这些数组进行操作。

Step2.2 检索并编码输入数据

data = {    \\\"island\\\": island,    \\\"bill_length_mm\\\": bill_length_mm,    \\\"bill_depth_mm\\\": bill_depth_mm,    \\\"flipper_length_mm\\\": flipper_length_mm,    \\\"body_mass_g\\\": body_mass_g,    \\\"sex\\\": sex,}input_df = pd.DataFrame(data, index=[0])encode = [\\\"island\\\", \\\"sex\\\"]input_encoded_df = pd.get_dummies(input_df, prefix=encode)

输入值是从 Stremlit 创建的输入表单中检索的,分类变量使用与创建模型时相同的规则进行编码。请注意,每个数据的顺序也必须与创建模型时的顺序相同。如果顺序不同,使用模型执行预测时将会出现错误。

Step2.3 加载模型

clf = joblib.load(\\\"penguin_classifier_model.pkl\\\")

“penguin_classifier_model.pkl”是存储之前保存的模型的文件。该文件包含经过训练的二进制格式的 RandomForestClassifier。运行此代码会将模型加载到 clf 中,允许您使用它对新数据进行预测和评估。

Step2.4 进行预测

prediction = clf.predict(input_encoded_df)prediction_proba = clf.predict_proba(input_encoded_df)

clf.predict(input_encoded_df):使用训练好的模型来预测新编码输入数据的类别,并将结果存储在预测中。
clf.predict_proba(input_encoded_df):计算每个类的概率,将结果存储在prediction_proba.

示例代码

步骤3.部署

\\\"Machine

您可以通过访问 Stremlit 社区云 (https://streamlit.io/cloud) 并指定 GitHub 存储库的 URL 在 Internet 上发布您开发的应用程序。

关于数据集

\\\"Machine

@allison_horst 的作品 (https://github.com/allisonhorst)

该模型使用 Palmer Penguins 数据集进行训练,这是一个广泛认可的用于练习机器学习技术的数据集。该数据集提供了来自南极洲帕尔默群岛的三种企鹅(阿德利企鹅、帽带企鹅和巴布亚企鹅)的信息。主要功能包括:

该数据集源自 Kaggle,可以在此处访问。特征的多样性使其成为构建分类模型和了解每个特征在物种预测中的重要性的绝佳选择。

","image":"http://www.luping.net/uploads/20241006/17282217676702924713227.png","datePublished":"2024-11-02T21:56:21+08:00","dateModified":"2024-11-02T21:56:21+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 使用 Streamlit 将机器学习模型部署为 Web 应用程序

使用 Streamlit 将机器学习模型部署为 Web 应用程序

发布于2024-11-02
浏览:122

介绍

机器学习模型本质上是一组用于进行预测或查找数据模式的规则或机制。简单地说(不用担心过于简单化),在 Excel 中使用最小二乘法计算的趋势线也是一个模型。然而,实际应用中使用的模型并不那么简单——它们通常涉及更复杂的方程和算法,而不仅仅是简单的方程。

在这篇文章中,我将首先构建一个非常简单的机器学习模型,并将其作为一个非常简单的 Web 应用程序发布,以了解该过程。

在这里,我将只关注流程,而不是 ML 模型本身。另外,我将使用 Streamlit 和 Streamlit Community Cloud 轻松发布 Python Web 应用程序。

长话短说:

使用 scikit-learn(一种流行的机器学习 Python 库),您可以快速训练数据并创建模型,只需几行代码即可完成简单任务。然后可以使用 joblib 将模型保存为可重用文件。这个保存的模型可以像 Web 应用程序中的常规 Python 库一样导入/加载,从而允许应用程序使用经过训练的模型进行预测!

应用程序网址:https://yh-machine-learning.streamlit.app/
GitHub:https://github.com/yoshan0921/yh-machine-learning.git

技术栈

  • Python
  • Streamlit:用于创建 Web 应用程序界面。
  • scikit-learn:用于加载和使用预先训练的随机森林模型。
  • NumPy 和 Pandas:用于数据操作和处理。
  • Matplotlib 和 Seaborn:用于生成可视化。

我做了什么

此应用程序允许您检查在帕尔默企鹅数据集上训练的随机森林模型所做的预测。 (有关训练数据的更多详细信息,请参阅本文末尾。)

具体来说,该模型根据各种特征预测企鹅物种,包括物种、岛屿、喙长、鳍状肢长度、体型和性别。用户可以导航应用程序以查看不同的功能如何影响模型的预测。

  • 预测屏幕
    Machine Learning Model Deployment as a Web App using Streamlit

  • 学习数据/可视化屏幕
    Machine Learning Model Deployment as a Web App using Streamlit

开发步骤1 - 创建模型

Step1.1 导入库

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import joblib

pandas是一个专门用于数据操作和分析的Python库。它支持使用 DataFrame 进行数据加载、预处理和结构化,为机器学习模型准备数据。
sklearn 是一个用于机器学习的综合 Python 库,提供训练和评估工具。在这篇文章中,我将使用称为随机森林的学习方法构建一个模型。
joblib 是一个 Python 库,可帮助以非常有效的方式保存和加载 Python 对象,例如机器学习模型。

Step1.2 读取数据

df = pd.read_csv("./dataset/penguins_cleaned.csv")
X_raw = df.drop("species", axis=1)
y_raw = df.species

加载数据集(训练数据)并将其分成特征(X)和目标变量(y)。

Step1.3 对类别变量进行编码

encode = ["island", "sex"]
X_encoded = pd.get_dummies(X_raw, columns=encode)

target_mapper = {"Adelie": 0, "Chinstrap": 1, "Gentoo": 2}
y_encoded = y_raw.apply(lambda x: target_mapper[x])

使用 one-hot 编码(X_encoded)将分类变量转换为数字格式。例如,如果“island”包含类别“Biscoe”、“Dream”和“Torgersen”,则会为每个类别创建一个新列(island_Biscoe、island_Dream、island_Torgersen)。对于性也是如此。如果原始数据是“Biscoe”,则 island_Biscoe 列将设置为 1,其他列将设置为 0。
目标变量物种映射到数值(y_encoded)。

Step1.4 分割数据集

x_train, x_test, y_train, y_test = train_test_split(
    X_encoded, y_encoded, test_size=0.3, random_state=1
)

为了评估模型,有必要衡量模型在未用于训练的数据上的性能。 7:3 被广泛用作机器学习中的一般实践。

Step1.5 训练随机森林模型

clf = RandomForestClassifier()
clf.fit(x_train, y_train)

拟合方法用于训练模型。
x_train 表示解释变量的训练数据,y_train 表示目标变量。
通过调用该方法,根据训练数据训练出来的模型存储在clf.

Step1.6 保存模型

joblib.dump(clf, "penguin_classifier_model.pkl")

joblib.dump()是以二进制格式保存Python对象的函数。通过以此格式保存模型,可以从文件加载模型并按原样使用,而无需再次训练。

示例代码

开发步骤 2 - 构建 Web 应用程序并集成模型

Step2.1 导入库

import streamlit as st
import numpy as np
import pandas as pd
import joblib

stremlit 是一个 Python 库,可以轻松地为机器学习和数据科学项目创建和共享自定义 Web 应用程序。
numpy 是用于数值计算的基本 Python 库。它提供对大型多维数组和矩阵的支持,以及一组数学函数来有效地对这些数组进行操作。

Step2.2 检索并编码输入数据

data = {
    "island": island,
    "bill_length_mm": bill_length_mm,
    "bill_depth_mm": bill_depth_mm,
    "flipper_length_mm": flipper_length_mm,
    "body_mass_g": body_mass_g,
    "sex": sex,
}
input_df = pd.DataFrame(data, index=[0])

encode = ["island", "sex"]
input_encoded_df = pd.get_dummies(input_df, prefix=encode)

输入值是从 Stremlit 创建的输入表单中检索的,分类变量使用与创建模型时相同的规则进行编码。请注意,每个数据的顺序也必须与创建模型时的顺序相同。如果顺序不同,使用模型执行预测时将会出现错误。

Step2.3 加载模型

clf = joblib.load("penguin_classifier_model.pkl")

“penguin_classifier_model.pkl”是存储之前保存的模型的文件。该文件包含经过训练的二进制格式的 RandomForestClassifier。运行此代码会将模型加载到 clf 中,允许您使用它对新数据进行预测和评估。

Step2.4 进行预测

prediction = clf.predict(input_encoded_df)
prediction_proba = clf.predict_proba(input_encoded_df)

clf.predict(input_encoded_df):使用训练好的模型来预测新编码输入数据的类别,并将结果存储在预测中。
clf.predict_proba(input_encoded_df):计算每个类的概率,将结果存储在prediction_proba.

示例代码

步骤3.部署

Machine Learning Model Deployment as a Web App using Streamlit

您可以通过访问 Stremlit 社区云 (https://streamlit.io/cloud) 并指定 GitHub 存储库的 URL 在 Internet 上发布您开发的应用程序。

关于数据集

Machine Learning Model Deployment as a Web App using Streamlit

@allison_horst 的作品 (https://github.com/allisonhorst)

该模型使用 Palmer Penguins 数据集进行训练,这是一个广泛认可的用于练习机器学习技术的数据集。该数据集提供了来自南极洲帕尔默群岛的三种企鹅(阿德利企鹅、帽带企鹅和巴布亚企鹅)的信息。主要功能包括:

  • 物种:企鹅的物种(Adelie、Chinstrap、Gentoo)。
  • 岛屿:观察到企鹅的特定岛屿(Biscoe、Dream、Torgersen)。
  • Bill Length:企鹅的嘴的长度(毫米)。
  • Bill Depth:企鹅喙的深度(毫米)。
  • Flipper Length:企鹅的鳍状肢的长度(毫米)。
  • Body Mass:企鹅的质量(g)。
  • 性别:企鹅的性别(雄性或雌性)。

该数据集源自 Kaggle,可以在此处访问。特征的多样性使其成为构建分类模型和了解每个特征在物种预测中的重要性的绝佳选择。

版本声明 本文转载于:https://dev.to/yoshan0921/machine-learning-model-deployment-as-a-web-app-using-streamlit-2c5p?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何在动态生成的下拉框中设置默认选择?
    如何在动态生成的下拉框中设置默认选择?
    确定下拉框中选定的项目使用 标签创建下拉列表时,您可以可能会遇到需要将特定选项设置为默认选择的情况。这在预填写表单或允许用户编辑其设置时特别有用。在您呈现的场景中, 标记是使用 PHP 动态生成的,并且您希望根据值存储在数据库中。实现此目的的方法如下:设置选定的属性要在下拉框中设置选定的项目,您需...
    编程 发布于2024-11-03
  • Tailwind CSS:自定义配置
    Tailwind CSS:自定义配置
    介绍 Tailwind CSS 是一种流行的开源 CSS 框架,近年来在 Web 开发人员中广受欢迎。它提供了一种独特的可定制方法来创建美观且现代的用户界面。 Tailwind CSS 区别于其他 CSS 框架的关键功能之一是它的可定制配置。在这篇文章中,我们将讨论 Tailwin...
    编程 发布于2024-11-03
  • 使用 jQuery
    使用 jQuery
    什么是 jQuery? jQuery 是一个快速的 Javascript 库,其功能齐全,旨在简化 HTML 文档遍历、操作、事件处理和动画等任务。 “少写多做” MDN 状态: jQuery使得编写多行代码和tsk变得更加简洁,甚至一行代码.. 使用 jQuery 处理事件 jQuery 的另一个...
    编程 发布于2024-11-03
  • CONCAT() 如何增强 MySQL 搜索功能以实现完整名称匹配?
    CONCAT() 如何增强 MySQL 搜索功能以实现完整名称匹配?
    WHERE 子句中使用 MySQL CONCAT() 函数进行高效搜索一种常见的数据库操作是跨多列搜索数据。然而,当分别使用名字和姓氏字段搜索姓名时,可能会存在一些限制,例如捕获不完整的匹配。为了克服这个问题,可以使用 MySQL CONCAT() 函数将列组合成一个用于搜索的单个字段。这提供了更加...
    编程 发布于2024-11-03
  • [每日套餐] ms
    [每日套餐] ms
    多发性硬化症 ms 将各种时间格式转换为毫秒,反之亦然。 /* time format to milliseconds */ ms('2 days') // 172800000 ms('1d') // 86400000 ms('10h') // 36000000...
    编程 发布于2024-11-03
  • 考虑将 WordPress 数据库从本地迁移到生产环境的注意事项
    考虑将 WordPress 数据库从本地迁移到生产环境的注意事项
    将数据库从本地环境迁移到生产服务器可能会让人感到不知所措,但如果采用正确的方法,则不必如此。在本指南中,我将介绍确保迁移过程顺利进行时需要考虑的关键点。 数据库迁移的关键注意事项 1。方案(协议) 示例:http 或 https 2.域名 本地示例:localhost、localho...
    编程 发布于2024-11-03
  • 了解 JavaScript 中的嵌套对象
    了解 JavaScript 中的嵌套对象
    对象是 JavaScript 开发人员所要处理的事情,不用说,这也适用于 TypeScript。 TypeScript 为您提供了多种方法来定义对象属性的类型定义。我们将在这篇文章中介绍其中的几个,从简单的示例开始,然后转向一些高级类型定义。 JavaScript 中的嵌套对象是包含其他对象或数组作...
    编程 发布于2024-11-03
  • 重载构造函数
    重载构造函数
    构造函数也可以重载,就像方法一样。 构造函数重载允许您以不同的方式创建对象。 MyClass 类有四个重载构造函数,每个构造函数以不同的方式初始化对象。 根据new语句中提供的参数调用适当的构造函数。 构造函数重载提供了构造对象的灵活性。 构造函数重载的一个常见原因是允许一个对象初始化另一个对象。...
    编程 发布于2024-11-02
  • 使用 Node.js 释放 JavaScript 的力量!
    使用 Node.js 释放 JavaScript 的力量!
    JavaScript 不再仅仅适用于浏览器:感谢 Node.js,它也接管了服务器端。 ?无论您是经验丰富的开发人员还是新手,掌握 Node.js 都会改变游戏规则。 这就是您应该开始使用 Node.js 的原因: JavaScript 无处不在:用 JavaScript 编写客户端和服务器端代码,...
    编程 发布于2024-11-02
  • 收集和处理 INMET-BDMEP 气候数据
    收集和处理 INMET-BDMEP 气候数据
    Os dados climáticos desempenham um papel crucial em diversos setores, auxiliando em estudos e previsões que impactam áreas como agricultura, planejame...
    编程 发布于2024-11-02
  • 有限责任合伙企业注册:主要优势和法律要求
    有限责任合伙企业注册:主要优势和法律要求
    将您的企业注册为有限责任合伙企业 (LLP) 因其独特的灵活性、法律保护和简化的合规性而受到企业家和专业人士的欢迎。有限责任合伙企业的注册具有独特的优势,并具有特定的法律要求,可确保精简高效的业务结构。以下详细介绍了 LLP 注册的主要优势和法律要求。 LLP注册的主要优势 1.有...
    编程 发布于2024-11-02
  • HLHealth 七级)
    HLHealth 七级)
    HL7,也称为 Health Level 7,是一种消息传递和临床标准标准,用于不同卫生系统中电子信息的集成、交换、管理和检索。它是一种基于事件触发的交易的协议,例如患者入院。 HL7 促进公共卫生领域的信息交流。 这是卫生部门广泛接受的数据交换国际标准,独立于所使用的平台和技术。 ...
    编程 发布于2024-11-02
  • 如何从单独的线程安全地更新 Qt 主窗口?
    如何从单独的线程安全地更新 Qt 主窗口?
    Qt - 使用第二个线程更新主窗口在多线程 Qt 应用程序中,从单独的线程更新主 UI (mainwindow.ui)可以构成挑战。本文解决了一个常见问题:无法从自定义线程内访问 UI 元素(例如给定代码中的 ana->ui->horizo​​ntalLayout_4)。解决方案涉及利用 Qt 的信...
    编程 发布于2024-11-02
  • 使用 NgRx 掌握 Angular 状态管理
    使用 NgRx 掌握 Angular 状态管理
    State management in Angular ensures that data is consistently and efficiently shared across all parts of an application. Instead of each component man...
    编程 发布于2024-11-02
  • Hexabot 设置和可视化编辑器教程:构建您的第一个 AI 聊天机器人
    Hexabot 设置和可视化编辑器教程:构建您的第一个 AI 聊天机器人
    聊天机器人爱好者大家好!在本教程中,我们将指导您完成设置和使用开源 AI 聊天机器人构建器 Hexabot 的过程。我们将首先克隆 GitHub 存储库、安装依赖项并为 Hexabot 配置环境变量。您还将学习如何使用 Docker 启动项目、访问管理面板以及使用可视化编辑器创建聊天机器人流程。 在...
    编程 发布于2024-11-02

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3