# ML-algorithm-platform **Repository Path**: zhenqingnanxun/ml-algorithm-platform ## Basic Information - **Project Name**: ML-algorithm-platform - **Description**: 建设一个“智能机器学习算法分析平台”,帮助用户完成从数据上传、数据理解、智能分析、特征推荐、训练前数据处理、模型训练、模型评估、模型管理到在线预测的完整机器学习流程。 平台需要降低普通用户使用机器学习算法的门槛,同时为算法工程师提供可追踪、可复现、可对比、可解释的实验管理能力。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-06-12 - **Last Updated**: 2026-06-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: 机器学习 ## README # 智能机器学习算法分析平台 基于需求文档搭建的 FastAPI + SQLAlchemy + pandas/scikit-learn + Layui + ECharts 项目。代码按 API、Schema、Service、Repository、ORM、ML 内核、任务层分离,训练和预测共用同一套可持久化 Pipeline,并记录训练、预处理、评估和预测过程。 ## 目录 ```text backend/ FastAPI 后端 frontend/ Layui 后台页面 config/ YAML 配置 storage/ 数据、模型、Pipeline、预测结果和日志 scripts/ 初始化脚本 tests/ 基础测试 ``` ## 启动 ```bash python3 -m venv .venv source .venv/bin/activate pip install -r backend/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple python scripts/init_db.py python backend/run.py ``` 默认访问地址: - 前端:http://127.0.0.1:8000 - API 文档:http://127.0.0.1:8000/docs 默认管理员来自 `config/application.yaml`: - 用户名:`admin` - 密码:`admin1234` ## 配置 项目不使用 `.env`。默认读取 `config/application.yaml`,并按 `app.env` 合并 `application-dev.yaml` 或 `application-prod.yaml`。 默认数据库为 SQLite: ```yaml database: default: sqlite ``` 切换 MySQL: ```yaml database: default: mysql ``` 数据库连接参数、JWT、上传大小、存储路径、训练默认参数均在 YAML 中维护。 ## 功能概览 - 首页总览:展示数据集、模型、训练任务、预测次数等指标;首行展示 CPU、内存、磁盘、训练进程等资源卡片;图表展示近 7 天训练趋势、算法类型状态分布和任务状态分布。 - 数据集管理:支持 CSV、Excel、JSON 上传、预览、字段识别、下载、删除和进入分析/训练;表格操作采用文字按钮,降低识别成本。 - 智能分析:提供描述性统计、异常值说明、类别统计说明、趋势图、相关性热力图、散点矩阵,以及单变量、双变量、多变量图表分析。趋势图会自动识别递增时间序列作为 X 轴,没有时间序列时使用递增索引。 - 非线性关系分析:双变量支持散点图 + LOWESS 平滑、分箱均值趋势、Hexbin/密度图;多变量支持 3D 散点、PCA/UMAP 投影、SHAP 依赖图、PDP/ICE 图表说明。 - 模型训练:训练任务名默认生成且可编辑,格式为 `training-YYYYMMDDHHMMSS-xxxx`;支持推荐特征联动勾选、目标字段自动从特征中排除、Pipeline 配置说明、创建结果成功/失败弹窗反馈。 - 训练任务:支持查看详情、日志和 Pipeline;训练过程记录数据加载、切分、预处理、训练、预测、评估、指标和耗时等信息。 - 模型仓库:支持模型详情、预测、评估、Pipeline、下载和删除;评估弹窗展示指标、Pipeline 摘要、预处理过程和训练过程报告。 - 在线预测:选择模型后可基于训练数据 IQR 合理范围自动生成一组输入特征;预测结果展示预测值、本次一行数据的预处理过程、训练时预处理规则参考和预测过程;预测失败时在页面明确提示错误原因。 - 系统管理:包含用户管理、日志、数据库状态和系统配置。系统配置支持表单视图和 JSON 视图切换,SQLite、MySQL、允许扩展名等复杂配置以更易读的表单方式展示。 ## 核心接口 - `/api/v1/auth`:登录、退出、个人信息、修改密码 - `/api/v1/users`:用户管理 - `/api/v1/datasets`:上传、列表、预览、字段识别、下载、删除 - `/api/v1/analysis`:智能分析、质量总结、特征推荐、图表生成 - `/api/v1/training`:创建训练任务、生成默认任务名、状态查询、日志、Pipeline、实验对比 - `/api/v1/models`:模型仓库、详情、评估报告、Pipeline 查看、样本输入生成、下载、删除 - `/api/v1/prediction`:单条预测、批量预测、预测记录 - `/api/v1/system`:总览、资源数据、日志、数据库状态、系统配置 - `/api/v1/config/algorithms`:算法注册表 ## Pipeline 说明 训练任务会保存: - 原始数据集 ID - 目标字段和最终特征列表 - 缺失值、异常值、编码、缩放和特征选择策略 - 已拟合的编码器、缩放器等对象 - 每一步预处理过程、涉及列、处理方式和影响行数 - 模型文件、Pipeline 文件、评估指标和训练过程报告 预测时从模型文件加载同一套 Pipeline,先校验字段并执行一致的预处理,再调用模型预测。预测结果会区分“本次预测的一行数据处理过程”和“训练时预处理规则参考”,避免把训练集影响行数误认为当前预测影响行数。 ## 存储说明 - `storage/db/`:SQLite 默认数据库文件。 - `storage/datasets/`:上传的原始数据集文件。 - `storage/models/`:训练后的模型对象文件,当前使用 joblib 序列化保存。 - `storage/pipelines/`:可复用的 Pipeline 对象文件,当前使用 joblib 序列化保存。 - `storage/predictions/`:批量预测导出结果。 - `storage/logs/`:应用日志、训练日志和错误日志。 - `storage/reports/`:报告文件预留目录。当前分析结果、评估摘要、预处理记录和训练记录主要存入数据库字段或随接口返回,不依赖该目录作为核心数据来源。 joblib 是 Python 生态常用的对象序列化格式,适合保存 scikit-learn 模型、编码器、缩放器和 Pipeline 等对象。删除 `storage/models/` 或 `storage/pipelines/` 会导致已训练模型无法加载、评估和预测;删除 `storage/reports/` 通常不影响当前核心训练和预测流程。 ## 测试 ```bash PYTHONPATH=backend pytest ``` 当前测试覆盖配置加载和 Pipeline 复用。更完整的接口、训练和预测集成测试可在此基础上继续扩展。 ## 系统预览 ### 首页 ![首页](img/首页.png) ### 数据质量与特征分析 ![数据分析](img/数据分析.png) ### 模型仓库 ![模型仓库](img/模型仓库.png) ## 版权说明 ### 版权声明 ML-algorithm-platform 的所有知识产权(包括但不限于著作权、商标权、专利权)均归作者眞情難尋哦所有。 软件源代码遵循 Apache License 2.0 开源协议,同时受本说明中附加条款约束。若附加条款与 Apache 协议冲突,以附加条款为准。 附加协议条款 #### 1. 授权范围 需在用户可见界面(如登录页、关于页)保留 Logo 及作者信息(含官网链接),免费商用,禁止未经许可包装OEM直接售卖。 #### 2. 禁止行为 禁止未经许可包装OEM直接售卖。 禁止将软件用于任何违反所在地法律法规的活动(包括但不限于网络攻击、数据窃取)。 禁止以任何形式(包括SDK、组件库)将程序集单独分发、集成至竞品或申请专利。 禁止通过技术手段(如混淆、重打包)隐匿或篡改原作者信息。 #### 4. 授权终止 若违反本协议任何条款,授权自动终止,需立即停止使用并销毁所有副本。作者保留追究法律责任的权利。 ### 免责声明 本软件按“现状”提供,作者不对其适用性、稳定性、安全性作任何明示或暗示担保。 因使用本软件导致的直接或间接损失(如数据丢失、业务中断),作者不承担任何责任。 用户需自行承担因违反当地法律法规导致的一切后果。 ### 问题反馈 如有任何问题联系:1105159489@qq.com ## 随便支持一下

支付宝

微信