Streamlit学习实战教程级,一个交互式的机器学习实验平台!

GitHub,一个交互式的机器学习实验平台!

powershell 复制代码
git clone https://github.com/patrickloeber/streamlit-demo
pip install -r requirements.txt
streamlit run main.py

用户可以像玩游戏一样,在浏览器里随意切换数据集、切换分类器、调整模型参数,然后立刻看到准确率和数据在二维空间的可视化散点图。

短短 80 多行代码,就做出了一个小型的"机器学习模型对比工具",特别适合教学、演示或快速实验。太强大了!

1. 开头导入库

python 复制代码
import streamlit as st 
import numpy as np 
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.decomposition import PCA
from sklearn.svm import SVC
from sklearn.neighbors import KNeighborsClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
  • 导入 Streamlit(做网页)、NumPy(处理数字)、Matplotlib(画图)
  • 从 scikit-learn(sklearn)导入:
    • 三个经典数据集
    • 三个常用分类器:SVM、KNN、随机森林
    • 工具:数据拆分、PCA降维、准确率计算

2. 页面标题和说明

python 复制代码
st.title('Streamlit 例子')
st.write(""" # 探索不同的分类器和数据集 ... """)
  • 大标题 + 一段说明文字,告诉用户:你可以试不同数据集和分类器,看哪个最好!

侧边栏:让用户选择数据集和分类器(核心交互!)

python 复制代码
dataset_name = st.sidebar.selectbox('选择数据集', ('Iris', 'Breast Cancer', 'Wine'))
classifier_name = st.sidebar.selectbox('选择分类器', ('KNN', 'SVM', 'Random Forest'))
  • 所有选择都放在左侧侧边栏(sidebar),界面更整洁。
  • 用户可以选三个经典数据集:
    • Iris(鸢尾花,简单经典)
    • Breast Cancer(乳腺癌诊断)
    • Wine(葡萄酒分类)
  • 可以选三个分类器:KNN、SVM、随机森林

4. 加载用户选择的数据集

python 复制代码
def get_dataset(name):
    if name == 'Iris': data = datasets.load_iris()
    elif name == 'Wine': data = datasets.load_wine()
    else: data = datasets.load_breast_cancer()
    X = data.data    # 特征(输入)
    y = data.target  # 标签(输出:类别)
    return X, y

X, y = get_dataset(dataset_name)
  • 根据用户选择,加载对应数据。
  • 显示数据集形状(多少样本、多少特征)和类别数量。

5. 侧边栏:根据分类器显示不同的参数调节滑块

python 复制代码
def add_parameter_ui(clf_name):
    params = dict()
    if clf_name == 'SVM':
        C = st.sidebar.slider('C', 0.01, 10.0)   # SVM 的正则化参数
        params['C'] = C
    elif clf_name == 'KNN':
        K = st.sidebar.slider('K', 1, 15)         # 邻居数量
        params['K'] = K
    else:  # Random Forest
        max_depth = st.sidebar.slider('max_depth', 2, 15)
        n_estimators = st.sidebar.slider('n_estimators', 1, 100)
        params['max_depth'] = max_depth
        params['n_estimators'] = n_estimators
    return params
  • 超级聪明的一招!根据你选的分类器,自动在侧边栏显示对应的可调参数:
    • SVM → 调 C(控制模型复杂度)
    • KNN → 调 K(邻居数)
    • 随机森林 → 调树深度和树的数量

6. 根据选择和参数创建分类器模型

python 复制代码
def get_classifier(clf_name, params):
    if clf_name == 'SVM':
        clf = SVC(C=params['C'])
    elif clf_name == 'KNN':
        clf = KNeighborsClassifier(n_neighbors=params['K'])
    else:
        clf = RandomForestClassifier(n_estimators=..., max_depth=..., random_state=1234)
    return clf

clf = get_classifier(classifier_name, params)
  • 用用户调好的参数,实例化对应的模型。

7. 训练 + 测试 + 计算准确率

python 复制代码
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1234)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
acc = accuracy_score(y_test, y_pred)
st.write(f'Classifier = {classifier_name}')
st.write(f'Accuracy =', acc)
  • 把数据分成训练集(80%)和测试集(20%)
  • 用训练集训练模型
  • 用测试集预测
  • 计算准确率并显示出来
    • → 你调参数的时候,准确率会实时变化!
python 复制代码
pca = PCA(2)
X_projected = pca.fit_transform(X)

x1 = X_projected[:, 0]
x2 = X_projected[:, 1]

fig = plt.figure()
plt.scatter(x1, x2, c=y, alpha=0.8, cmap='viridis')
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.colorbar()

st.pyplot(fig)
  • 因为原始数据可能是高维的(比如 Wine 有 13 个特征),人眼看不了。
  • 用 PCA(主成分分析)把所有特征压缩成 2 个主成分。
  • 画散点图:横轴是第一主成分,纵轴是第二主成分,颜色表示不同类别。
  • 颜色条显示类别对应关系。
  • 最后用 st.pyplot(fig) 显示这张图。

你运行后会看到什么样子?

启动命令:streamlit run main.py

浏览器里会出现一个漂亮的网页:

  • 左边侧边栏:

    • 选数据集
    • 选分类器
    • 对应的参数滑块(自动切换!)
  • 主页面:

    • 显示当前数据集信息(形状、类别数)
    • 显示当前分类器和实时准确率
    • 一张彩色的散点图,展示数据在二维空间的分布(不同类别用不同颜色)

你随便调滑块、换模型、换数据集,所有结果立刻刷新,完全不用重启!

这个应用牛在哪儿?

  • 零前端代码,全 Python 实现
  • 高度交互:用户可以像玩玩具一样实验机器学习
  • 实时反馈:调参数马上看到准确率变化
  • 教育价值极高:特别适合初学者理解"不同模型在不同数据上的表现"

总之,这个例子已经是非常优秀的 Streamlit + 机器学习结合案例了!你学到这里,已经能做出真正有用的数据应用了!

感谢老马的grok,学再多不如自己动手实践。

相关推荐
txg66628 分钟前
自动驾驶领域热点简报(2026-04-26 ~ 2026-05-03)
linux·人工智能·自动驾驶
龙山云仓1 小时前
小G&老D求解:第7日·立夏·蝼蝈鸣
人工智能·机器学习
幸福巡礼1 小时前
【LangChain 1.2 实战(一)】 概述
笔记·学习·langchain
LaughingZhu1 小时前
Product Hunt 每日热榜 | 2026-04-30
人工智能·经验分享·深度学习·神经网络·产品运营
sunneo1 小时前
专栏D-团队与组织-03-产品文化
人工智能·产品运营·aigc·产品经理·ai编程
Muyuan19981 小时前
28.Paper RAG Agent 开发记录:修复 LLM Rerank 的解析、Fallback 与可验证性
linux·人工智能·windows·python·django·fastapi
AI科技星2 小时前
精细结构常数α作为SI 7大基本量纲统一耦合常数的量子几何涌现理论
算法·机器学习·数学建模·数据挖掘·量子计算
小呆呆6662 小时前
Codex 穷鬼大救星
前端·人工智能·后端
薛定猫AI2 小时前
【深度解析】Kimi K2.6 的长上下文 Agentic Coding 能力与 OpenAI 兼容 API 接入实践
人工智能·自动化·知识图谱
星爷AG I2 小时前
20-6 记忆整合(AGI基础理论)
人工智能·agi