一个基于Streamlit和PyCaret的快速机器学习建模平台,支持分类和回归任务的自动化模型训练、比较和预测。
- 🚀 快速建模: 基于PyCaret实现自动化机器学习流程
- 📊 多模型对比: 自动训练和比较多种机器学习算法
- 🎯 分类任务: 支持各种分类问题的建模和预测
- 📈 回归任务: 支持回归问题的建模和预测
- 🎲 聚类分析: K-means无监督聚类,自动发现数据群组
- 💾 模型保存: 自动保存最佳模型供后续使用
- 📁 文件支持: 支持CSV和Excel格式数据文件
- 🎨 交互界面: 基于Streamlit的直观Web界面
- 🔧 自动预处理: 数据标准化和特征工程
- 📋 详细报告: 模型性能对比和评估指标
- 📊 可视化分析: 聚类结果多维度可视化展示
- Streamlit 1.49.1 - Web应用框架
- PyCaret 3.3.2 - 低代码机器学习库
- Pandas - 数据处理和分析
- Matplotlib - 数据可视化
- Scikit-learn - 机器学习算法库
- Python 3.7+ - 编程语言
- Python 3.7+
- pip 包管理器
git clone https://github.com/yourusername/MLquick.git
cd MLquickpython -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activatepip install -r requirements.txtstreamlit run src/MLquick.py打开浏览器访问 http://localhost:8501
# 核心依赖
streamlit==1.49.1
pycaret==3.3.2
pandas>=1.5.0
matplotlib>=3.5.0
numpy>=1.21.0
openpyxl>=3.0.0
# 机器学习算法
scikit-learn>=1.1.0
xgboost>=1.6.0
lightgbm>=3.3.0
# 可选依赖
seaborn>=0.11.0 # 可视化
plotly>=5.0.0 # 交互式图表FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8501
CMD ["streamlit", "run", "src/MLquick.py"]- 支持格式: CSV, Excel (.xlsx, .xls)
- 数据要求: 无缺失值,特征列清晰
- 文件大小: 建议 < 100MB
上传数据 → 选择任务类型 → 设置目标变量 → 配置训练参数 → 训练模型 → 查看结果
- 点击"上传数据集"按钮
- 选择CSV或Excel文件
- 系统自动显示数据预览
- 任务类型: 选择"分类"或"回归"
- 目标变量: 从下拉列表选择预测目标
- 训练集比例: 设置0.6-0.8之间,推荐0.7
- 点击"训练模型"按钮
- 系统自动执行以下步骤:
- 数据预处理
- 特征工程
- 多算法训练
- 性能评估
- 最佳模型选择
- 查看模型对比表格
- 最佳模型信息
- 性能指标详情
- 勾选"载入最佳模型进行预测"
- 上传预测数据文件
- 获取预测结果
MLquick/
├── src/ # 源代码目录
│ ├── __init__.py # 包初始化文件
│ ├── MLquick.py # 主应用程序
│ ├── models/ # 模型相关模块
│ │ └── __init__.py # 模型模块初始化
│ └── utils/ # 工具模块
│ └── __init__.py # 工具模块初始化
├── docs/ # 文档目录
│ ├── api.md # API文档
│ └── examples.md # 示例数据说明
├── data/ # 数据目录
│ ├── samples/ # 示例数据
│ │ ├── classification_sample.csv # 分类任务样例数据
│ │ ├── regression_sample.csv # 回归任务样例数据
│ │ └── clustering_sample.csv # 聚类任务样例数据
│ └── png/ # 图片资源
├── models/ # 训练好的模型文件
├── notebooks/ # Jupyter笔记本(预留)
├── tests/ # 测试文件(预留)
├── .venv/ # Python虚拟环境
├── .git/ # Git版本控制
├── .claude/ # Claude配置
├── requirements.txt # 依赖包列表
├── .gitignore # Git忽略文件配置
├── LICENSE # MIT许可证
├── README.md # 项目说明文档
└── logs.log # 日志文件
功能: 执行分类任务建模 参数:
data(pd.DataFrame): 输入数据target_variable(str): 目标变量名train_size(float): 训练集比例
返回值:
best_model: 最佳训练模型model_comparison: 模型对比结果
功能: 执行回归任务建模 参数: 同分类任务
功能: 使用已训练模型进行预测 参数:
model_path(str): 模型文件路径prediction_file: 预测数据文件
项目提供了两个样例数据文件,位于 data/samples/ 目录:
场景: 客户购买行为预测
- 样本数量: 500条
- 特征数量: 6个特征
- 目标变量:
purchase_category(购买类别)- Electronics (电子产品)
- Books (图书)
- Clothing (服装)
特征说明:
age: 年龄income: 收入education_level: 教育水平years_experience: 工作经验年限has_credit_card: 是否有信用卡marital_status: 婚姻状况
使用方法:
- 上传
data/samples/classification_sample.csv文件 - 选择任务类型为"分类"
- 选择目标变量为
purchase_category - 设置训练集比例(推荐0.7)
- 点击"训练模型"
场景: 房价预测
- 样本数量: 400条
- 特征数量: 11个特征
- 目标变量:
price_in_thousands(房价,单位:千美元)
特征说明:
house_age: 房屋年龄square_feet: 面积(平方英尺)num_bedrooms: 卧室数量num_bathrooms: 浴室数量garage_size: 车库大小neighborhood_quality: 社区质量评分 (1-10)school_rating: 学校评分 (1-10)distance_to_downtown: 距离市中心距离(英里)has_pool: 是否有游泳池has_garden: 是否有花园year_built: 建造年份
使用方法:
- 上传
data/samples/regression_sample.csv文件 - 选择任务类型为"回归"
- 选择目标变量为
price_in_thousands - 设置训练集比例(推荐0.7)
- 点击"训练模型"
场景: 客户细分分析
- 样本数量: 200条
- 特征数量: 10个数值特征
- 任务类型: 无监督聚类分析
特征说明:
age: 年龄income: 年收入spending_score: 消费评分 (0-100)savings_score: 储蓄评分 (0-100)years_as_customer: 客户年限avg_monthly_purchases: 月均购买次数online_frequency: 线上购物频率in_store_frequency: 线下购物频率discount_usage: 优惠使用率 (%)loyalty_points: 会员积分
使用方法:
- 上传
data/samples/clustering_sample.csv文件 - 选择任务类型为"聚类"
- 设置聚类数量(推荐3-5个)
- 选择用于聚类的特征(可多选,默认使用前5个数值特征)
- 点击"训练模型"
预期聚类结果:
- 聚类0: 高收入高消费的优质客户
- 聚类1: 中等收入的稳定客户
- 聚类2: 年轻的低消费客户
# 加载分类样例数据
import pandas as pd
data = pd.read_csv('data/samples/classification_sample.csv')
# 或者加载回归样例数据
data = pd.read_csv('data/samples/regression_sample.csv')
# 或者加载聚类样例数据
data = pd.read_csv('data/samples/clustering_sample.csv')A: 目前支持CSV和Excel格式,确保文件编码为UTF-8。
A: 可以通过减少训练集比例或选择特定算法来缩短训练时间。
A:
- 确保数据质量,处理缺失值和异常值
- 尝试不同的训练集比例
- 进行特征工程和特征选择
A: 模型文件自动保存在项目根目录,文件名为best_classification_model.pkl或best_regression_model.pkl。
A: 可以在界面上选择下载预测结果为CSV文件。
我们欢迎所有形式的贡献!
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
- 遵循PEP 8编码规范
- 添加适当的注释和文档字符串
- 编写单元测试
- 确保代码通过所有测试
使用GitHub Issues报告问题,请包含:
- 详细的错误描述
- 重现步骤
- 环境信息
- 相关日志
本项目采用 Apache License 2.0 许可证 - 查看 LICENSE 文件了解详情。
- Streamlit - 强大的Web应用框架
- PyCaret - 简化的机器学习库
- Scikit-learn - 机器学习算法库
- 项目主页: GitHub Repository
- 问题反馈: GitHub Issues
- 邮箱: yl_zhangqiang@foxmail.com
⭐ 如果这个项目对你有帮助,请给我们一个星标!






