
如何使用 Streamlit 快速部署机器学习模型
作者 | Ideogram 提供图片
本文将引导您完成使用 Streamlit 部署简单的回归机器学习 (ML) 模型的过程。这个新平台可以简化和优化将 ML 系统等工件部署为 Web 服务的过程。
即将部署模型的概览
本文旨在展示在几分钟内即可在云端运行 ML 模型。因此,我们将继续构建和部署一个极其简单的线性回归模型,该模型根据单个属性:房屋尺寸(平方英尺)来预测房价。
这是我们将作为起点使用的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
import streamlit as st import pandas as pd import numpy as np from sklearn.model_selection import train_test_split 来自 sklearn.linear_model 导入 LinearRegression from sklearn.metrics import mean_squared_error, r2_score import plotly.express as px # 为训练模型生成合成数据示例 def generate_house_data(n_samples=100): np.random.seed(42) size = np.random.normal(1500, 500, n_samples) price = size * 100 + np.random.normal(0, 10000, n_samples) return pd.DataFrame({'size_sqft': size, 'price': price}) # 用于实例化和训练线性回归模型的函数 def train_model(): df = generate_house_data() # 训练-测试数据拆分 X = df[['size_sqft']] y = df['price'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 训练模型 model = LinearRegression() model.fit(X_train, y_train) return model # 已部署模型的 Streamlit 用户界面 def main(): st.title('🏠 简单的房屋定价预测器') st.write('输入房屋尺寸以预测其售价') # 训练模型 model = train_model() # 用户输入 size = st.number_input('房屋尺寸(平方英尺)', min_value=500, max_value=5000, value=1500) if st.button('预测价格'): # 进行预测 prediction = model.predict([[size]]) # 显示结果 st.success(f'预计价格:${prediction[0]:,.2f}') # 可视化 df = generate_house_data() fig = px.scatter(df, x='size_sqft', y='price', title='尺寸与价格的关系') fig.add_scatter(x=[size], y=[prediction[0]], mode='markers', marker=dict(size=15, color='red'), name='预测') st.plotly_chart(fig) if __name__ == '__main__': main() |
关于上面main()
方法的几个快速说明
- Streamlit 主要用于定义用户界面,以便在模型部署后与之交互。
- 模型首先通过调用先前定义的方法进行训练,之后会出现一个输入字段和一个按钮,让用户输入房屋尺寸并获得价格预测。
- 点击按钮后,Streamlit 将处理模型推理,不仅返回并显示预测结果,还将 Plotly 的交互式可视化图与训练数据一起添加。
- 🏠 表情符号纯属 ""故"" 😉
上面展示的代码即使您尝试在 Jupyter 或 Colab 等 Python 笔记本中运行,也能正常执行——前提是前面有安装必要依赖项的 pip install
说明——但这将不允许您与已部署的模型进行交互:要做到这一点,我们必须稍微“冒险”进入实践!
部署模型
要进行实际部署,首先将上述代码复制并粘贴到一个 .py
文件中,该文件可以创建或上传到您自己的 GitHub 存储库。在同一个 GitHub 目录中,您还需要一个 requirements.txt
文件,其中包含以下依赖项:
1 2 3 4 5 |
streamlit==1.29.0 pandas==2.1.4 numpy==1.26.2 scikit-learn==1.3.2 plotly==5.18.0 |
确保您的目标 GitHub 目录如下所示
我们将通过将这些文件与 Streamlit Cloud 应用关联来进行部署。在该网站上注册并点击右上角的创建应用。您应该会看到一些选项
我们选择第一个选项:从 Github 部署公共应用。
接下来,我们将引入必要的元素来将模型部署为 Streamlit 应用:Github 存储库 URL、分支和主文件(我们之前保存的 .py 文件),以及一个可选的应用 URL,任何人都可以通过该 URL 访问。您会很快注意到 Streamlit 使此步骤变得容易,因为它会自动推断出部分信息。
点击部署,交叉手指,希望一切顺利!您的已部署模型现在可以访问了。生成的界面

使用 Streamlit 部署的机器学习模型的界面
作者提供图片
模型已部署:做得好!
感谢 Ivan 带来如此精彩的文章,与其他文章相比,您的文章非常精准且运行流畅
感谢您的反馈 Vinod!