当前位置: 首页 > news >正文

使用Streamlit部署机器学习模型

机器学习:
计算机能够从经验中学习,而无需明确编程。机器学习是目前最热门的领域之一,世界各地的顶级公司都在使用它来改善他们的服务和产品。但是没有使用在Jupyter Notebook中训练的机器学习模型。因此,我们需要部署这些模型,以便每个人都可以使用它们。在本文中,我们将首先训练Iris Species分类器,然后使用Streamlit部署模型,Streamlit是一个开源应用程序框架,用于轻松部署ML模型。

Streamlit库:
Streamlit允许您使用简单的Python脚本为机器学习项目创建应用程序。它还支持热加载,以便您的应用可以在您编辑和保存文件时实时更新。一个应用程序只需要几行代码就可以使用Streamlit API构建(我们将在下面看到)。添加小部件与声明变量是一样的。不需要编写后端,定义不同的路由或处理HTTP请求。它易于部署和管理。更多信息可以在他们的网站上找到https://www.streamlit.io/

首先,我们将训练我们的模型。我们不会做太多的预处理,因为本文的主要目的不是建立一个准确的ML模型,而是展示它的部署。

首先,我们需要安装以下内容

pip install pandas
pip install numpy
pip install sklearn
pip install streamlit

机器学习模型示例

import pandas as pd
import numpy as npdf = pd.read_csv('BankNote_Authentication.csv')
df.head()

在这里插入图片描述
现在,我们首先删除Id列,因为它对于分类Iris物种并不重要。然后我们将数据集分为训练和测试数据集,并使用随机森林分类器。您可以使用您选择的任何其他分类器,例如,逻辑回归,支持向量机等。

# Dropping the Id column
df.drop('Id', axis = 1, inplace = True)# Renaming the target column into numbers to aid training of the model
df['Species']= df['Species'].map({'Iris-setosa':0, 'Iris-versicolor':1, 'Iris-virginica':2})# splitting the data into the columns which need to be trained(X) and the target column(y)
X = df.iloc[:, :-1]
y = df.iloc[:, -1]# splitting data into training and testing data with 30 % of data as testing data respectively
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 0)# importing the random forest classifier model and training it on the dataset
from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier()
classifier.fit(X_train, y_train)# predicting on the test dataset
y_pred = classifier.predict(X_test)# finding out the accuracy
from sklearn.metrics import accuracy_score
score = accuracy_score(y_test, y_pred)

我们得到了95.55%的准确率,这是相当不错的。
现在,为了使用这个模型来预测其他未知数据,我们需要保存它。我们可以使用pickle保存它,pickle用于序列化和反序列化Python对象结构。

# pickling the model
import pickle
pickle_out = open("classifier.pkl", "wb")
pickle.dump(classifier, pickle_out)
pickle_out.close()

在同一目录中将创建一个名为“classifier.pkl”的新文件。

部署模型

现在我们可以开始使用Streamlit来部署模型了。
将下面的代码粘贴到另一个python文件中。

import pandas as pd
import numpy as np
import pickle
import streamlit as st
from PIL import Image# loading in the model to predict on the data
pickle_in = open('classifier.pkl', 'rb')
classifier = pickle.load(pickle_in)def welcome():return 'welcome all'# defining the function which will make the prediction using
# the data which the user inputs
def prediction(sepal_length, sepal_width, petal_length, petal_width):prediction = classifier.predict([[sepal_length, sepal_width, petal_length, petal_width]])print(prediction)return prediction# this is the main function in which we define our webpage
def main():# giving the webpage a titlest.title("Iris Flower Prediction")# here we define some of the front end elements of the web page like# the font and background color, the padding and the text to be displayedhtml_temp = """<div style ="background-color:yellow;padding:13px"><h1 style ="color:black;text-align:center;">Streamlit Iris Flower Classifier ML App </h1></div>"""# this line allows us to display the front end aspects we have# defined in the above codest.markdown(html_temp, unsafe_allow_html = True)# the following lines create text boxes in which the user can enter# the data required to make the predictionsepal_length = st.text_input("Sepal Length", "Type Here")sepal_width = st.text_input("Sepal Width", "Type Here")petal_length = st.text_input("Petal Length", "Type Here")petal_width = st.text_input("Petal Width", "Type Here")result =""# the below line ensures that when the button called 'Predict' is clicked,# the prediction function defined above is called to make the prediction# and store it in the variable resultif st.button("Predict"):result = prediction(sepal_length, sepal_width, petal_length, petal_width)st.success('The output is {}'.format(result))if __name__=='__main__':main()

然后,您可以在终端中键入以下命令来运行应用

streamlit run app.py

在这里插入图片描述
app.py是我们编写Streamlit代码的文件名。
该网站将在您的浏览器中打开,然后您可以对其进行测试。这种方法也可以用于部署其他机器和深度学习模型。

http://www.lryc.cn/news/510210.html

相关文章:

  • 依图科技简介
  • 苍穹外卖day07缓存部分分析
  • OCR实践-Table-Transformer
  • HarmonyOS NEXT 实战之元服务:静态案例效果---电台推荐
  • 微信小程序 不同角色进入不同页面、呈现不同底部导航栏
  • MATLAB符号计算-符号表达式基础运算操作
  • 服务器被攻击怎么办
  • 精准识别花生豆:基于EfficientNetB0的深度学习检测与分类项目
  • 【UE5 C++课程系列笔记】13——GameInstanceSubsystem的简单使用
  • 实用工具推荐----Doxygen使用方法
  • js垃圾回收机制详细讲解
  • 【Linux/踩坑】Linux中启动eclipse或HDFS因JAVA_HOME设置报错
  • 百度千帆平台构建AI APP的基础概念梳理
  • Unity3D Huatuo技术原理剖析详解
  • 记Fastjson2的一个报ConcurrentModificationException的bug
  • 使用TimesFM 对车辆销售进行预测
  • OpenEuler 22.03 不依赖zookeeper安装 kafka 3.3.2集群
  • ubuntu 将python3.8 升级为python3.10并进行版本切换
  • 3. Kafka入门—安装与基本命令
  • 如何使用 python创建图片格式转换器
  • 命令行之巅:Linux Shell编程的至高艺术(上)
  • 【gulp】gulp 的基本使用
  • Linux 下处理 ^M 字符的最佳实践
  • 【优选算法】—复写零(双指针算法)
  • 2024国赛A问题三和四
  • asp.net 高校学生勤工俭学系统设计与实现
  • 《计算机组成及汇编语言原理》阅读笔记:p116-p120
  • C# OpenCvSharp DNN 卡证检测矫正
  • Spring Boot 中 Map 的最佳实践
  • J-LangChain - 智能链构建