如何使用 Gradio 在 Python 中构建机器学习 Web 应用
数据科学由来自不同领域的学生和专业人士实践,例如商业管理、金融服务、医学和健康、农业、信息、技术、学术、执法等。部署机器学习模型和创建用户界面至关重要将完成的模型传达给客户。然而,设计用户界面和后端比开发机器学习模型需要更多的努力。您必须编写许多行代码,并且需要大量的精力和时间。像 Django 或 Flask 这样的传统部署框架是众所周知的并且使用最多,但是,它们可能既困难又耗时。好吧,我们现在构建了多个库来简化部署过程。 Gradio 就是其中之一。一个 Python 库,可让您快速轻松地为已完成的 ML 模型创建 Web 用户界面。在本教程中,我将向您介绍 Gradio 库,并向您展示如何在机器学习项目中使用它。
先决条件
在开始本教程之前,您需要以下内容:
-
安装了 Python(版本 >3)的工作计算机。
-
代码编辑器或 Jupyter 笔记本(您可以使用Anaconda或Visual Studio Code为此)
-
一些互联网连接。
zoz100003 Gradio简介
Gradio 是一个 Python 库,它既免费又开源。我们可以在 Python 笔记本中高效且简单地开发 UI 界面,只需几行代码即可与任何人共享它们,并显示我们完成的模型的结果。 Gradio 使在 Colab、Jupyter 笔记本、脚本、TensorFlow 或 PyTorch 模型甚至随机 Python 函数中构建可定制的 UI 组件变得简单。
为了帮助您开始使用 Gradio,我已经构建了一个模型,我们将使用该模型创建一个简单的鸢尾花预测 Web 应用程序,使用公共的鸢尾物种数据集可以告诉您鸢尾花是否属于该物种输入 setosa、versicolor 或 virginica。
入门
此演示项目将需要三个 Python 库:Gradio、scikit-learn 和 pandas。您可以使用以下 pip 命令安装它们:
pip install gradio
pip install sklearn
pip install pandas
成功安装后,您可以将包导入 Python 笔记本/脚本,如下所示:
import gradio as gr
import sklearn
import pandas as pd
现在,我们已经准备好使用 Gradio 来设计一个令人惊叹的用户界面了😉。
使用 Gradio 构建 UI
gradio.interface()
函数用于建立具有重要参数的接口,例如输入、输出和可调用函数。launch()
函数用于显示界面;在此之后,将生成一个外部 URL,以便在浏览器中轻松共享和运行界面。 Gradio 支持的 Web 应用程序的代码如下所示:
import gradio as gr
from sklearn import datasets
from sklearn.tree import DecisionTreeClassifier
data = datasets.load_iris()
X = data.data
Y = data.target
model= DecisionTreeClassifier()
model.fit(X, Y)
def iris(sepal_length ,sepal_width, petal_length, petal_width):
prediction = model.predict([[sepal_length ,sepal_width,
petal_length, petal_width]])
prediction= data.target_names[prediction]return prediction
#create input and output objects
#input object1
input1 = gr.inputs.Number(label="sepal length (cm)")
#input object 2
input2 = gr.inputs.Number(label="sepal width (cm)")
#input object3
input3 = gr.inputs.Number(label="petal length (cm)")
#input object 3
input4 = gr.inputs.Number(label="petal width (cm)")
#output object
output = gr.outputs.Textbox(label= "Name of Species")
#create interface
gui = gr.Interface(fn=iris,
inputs=[input1, input2, input3, input4],
outputs=output).launch()
现在,让我逐行解释上面的代码并将其分解,以便我们了解每一行(或代码块)的作用。
导入库
在第 1-3 行中,我们从 scikit-learn 库 (sklearn) 中导入带有gr
别名的 Gradio 库和datasets
包(将用于在第 5 行中加载 Iris 数据集)。最后,我们使用从sklearn.tree
包中导入DecisionTreeClassifier()
方法。
模型搭建
在第 5-9 行中,我们编写了如下所述的实际模型构建设置:
-
第 5 行:从
sklearn.datasets
包中加载 Iris 数据集并将其分配给data
变量。 -
第 6 行:创建
X
变量,其中包含data.data
中提供的 4 个花卉特征(即萼片长度、萼片宽度、花瓣长度和花瓣宽度)。 -
第 7 行:创建与
data.target
中提供的 Iris 类标签有关的Y
变量。 -
第 8 行:将随机森林分类器,特别是
DecisionTreeClassifier()
函数分配给model
变量。 -
第 9 行:使用
X
和Y
变量作为输入参数,通过model.fit()
函数训练模型。这实质上意味着将通过使用四个花卉特征(X
)和类标签(Y
)对其进行训练来构建分类模型。
模型部署
在第 12-33 行中,Gradio 库用于构建用户界面,如下所述:
-
第 12 行:创建一个名为
iris
的函数,其中包含四个参数,这些参数与训练模型时使用的特征的数量和名称相对应。 -
第13-14行:
predict()
函数用于预测花名,并赋值给预测变量。 -
第 15 行:为了显示类标签(即 setosa、versicolor 和 virginica),我们需要使用
prediction
变量作为data.target_names[prediction]
括号内的参数。 -
第16行:函数返回预测值
-
第 18-28 行:输入和输出被标记以更清晰。
-
第31-34行:使用
interface()
函数创建界面,使用launch()
函数显示界面。
如果您运行 Python 应用程序,将生成一个外部 URL,您可以在任何浏览器中访问 Web 界面(例如:49508.gradio.app),如下面的屏幕截图所示。
您应该注意,公共 URL 将在其生成后 72 小时后过期。如果您想要一个永久托管的链接,那么您可以使用HuggingFace Spaces来托管您的 Gradio Web 应用程序,如下面的演示所示。
GIF 来源:Gradio 文档
结论
我希望本教程为您提供了解 Gradio 库所需的基础知识,并帮助您开始使用 Gradio。您可以在这个GitHub repo中查看演示的完整代码,或者探索 Gradio 的高级功能。谢谢阅读!
参考文献
-
Gradio 入门
-
渐变文档
-
Gradio 库教程
更多推荐
所有评论(0)