Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

智衡 · AI 三场景决策台(Editorial Edition)

一套 Streamlit 前端 + scikit-learn 模型 + MySQL 存储的系统,覆盖三类人工智能任务:

# 场景 任务类型 算法要求 用户功能
01 学生群体划分 无监督聚类 ≥ 2 种,择优定型 批量录入成绩 → 自动分 4 群体打标签入库 → 按群体/按学号查询
02 房屋价格预测 回归 ≥ 3 种,择优定型 单条/批量录入房屋参数 → 预测价格入库 → 按编号/全量查询
03 癌症复发研判 二分类 ≥ 3 种,择优定型 单条/批量录入体检数据 → 研判复发入库 → 按编号/全量查询

设计原则:模型开发不面向用户(离线在 models/ 完成训练与择优);面向用户的只有 「录入 → 自动判别 → 入库 → 查询」这一条清爽动线。

视觉上走 杂志极简(Editorial) 风:米白纸面 #FAF8F3 + 大号衬线标题 + 墨黑正文 + 砖红 强调 #C0392B + 发丝分隔线 + 编号栏目(01/02/03),与默认 Streamlit 面板完全不同。


技术栈

  • 语言:Python(代码按 3.7 语法编写;见文末兼容性说明)
  • AI 工具scikit-learn / numpy / pandas / matplotlib / seaborn
  • 前端Streamlit(自定义 CSS 深度定制)
  • 数据库MySQL(PyMySQL + SQLAlchemy)为主,连不上自动回退 SQLite 兜底

目录结构

ai-/
├── config.py              # 全局配置:路径 / 数据库 / 三场景元信息
├── requirements.txt
├── db/
│   ├── connection.py      # MySQL→SQLite 自动兜底的连接层
│   └── schema.sql         # 手工建库建表 DDL(数据上传后补全真实列)
├── models/                # 【离线】模型开发:多算法对比 + 择优(不面向用户)
│   ├── train_students.py  #   场景1:KMeans / 层次聚类 / GMM
│   ├── train_house.py     #   场景2:线性·Ridge / 随机森林 / GBDT / SVR
│   └── train_cancer.py    #   场景3:逻辑回归 / SVM / 随机森林 / GBDT
├── pipeline/              # 推理 + 入库管线(前端调用,与训练共享预处理)
├── app/
│   ├── app.py             # Streamlit 入口(运行:streamlit run app/app.py)
│   └── theme.py           # Editorial 主题与排版组件
├── artifacts/             # 训练产物:模型(.joblib) / 指标 / 图表
└── data/                  # 原始数据(附件 1-6 的 CSV,见下)

快速开始

# 1) 安装依赖
pip install -r requirements.txt

# 2)(可选)配置 MySQL —— 不配也能跑,会自动用 SQLite 兜底
#    可用环境变量覆盖 config.py 中的默认值:
export AISYS_DB_HOST=127.0.0.1 AISYS_DB_PORT=3306 \
       AISYS_DB_USER=root AISYS_DB_PASSWORD=yourpwd AISYS_DB_NAME=ai_three_scenes

# 3) 启动前端
streamlit run app/app.py

数据放置(附件 1–6)

把附件 CSV 按下列文件名放入 data/ 目录:

场景 训练数据 待预测数据
学生群体划分 data/attachment1_students_train.csv(附件1) data/attachment2_students_new.csv(附件2)
房屋价格预测 data/attachment3_house_train.csv(附件3) data/attachment4_house_new.csv(附件4)
癌症复发研判 data/attachment5_cancer_train.csv(附件5) data/attachment6_cancer_new.csv(附件6)

录入表单、预处理、模型推理与建表 DDL 都会依据真实数据的列名生成,因此请先上传数据。

数据库说明(MySQL 为主 + SQLite 兜底)

  • 程序启动优先连接 config.MYSQL 指定的 MySQL,并在缺库时自动 CREATE DATABASE(等价于手工执行 db/schema.sql)。
  • 若无可连 MySQL(无实例 / 网络不通 / 缺驱动),自动回退到本地 app_fallback.db(SQLite), 界面侧栏与页脚会显示当前实际使用的后端。
  • 如需强制只用 MySQL:设环境变量 AISYS_ALLOW_SQLITE=0

当前进度

  • 工程地基:配置、数据库连接层(MySQL/SQLite)、依赖
  • Editorial 前端外壳:总览 + 三场景页 + 系统页
  • 场景1 学生群体划分:KMeans/层次/GMM 三算法对比 → 择优 K-Means(Silhouette 0.436 最高); 4 群体(全面优秀/理科优势/文科优势/待提升);录入·分群·入库·查询全流程已通;附件1/2 真实数据
  • 场景2 房屋价格预测:线性/Ridge/随机森林/GBDT/SVR 五算法 5 折 CV → 择优 随机森林 (定型 R²=0.713, RMSE=7.25, MAE=4.72);录入·预测·入库·查询全流程已通;附件3/4 真实数据
  • 场景3 癌症复发研判:逻辑回归/SVM/随机森林/GBDT 四算法分层 5 折 CV(准确率/精确率/召回/F1/AUC) → 以 AUC 择优 随机森林(定型 AUC=0.933, F1=0.817, 召回=0.789);类别特征独热编码; 录入·研判·入库·查询全流程已通;附件5/6 真实数据
  • db/schema.sql:students / houses / cancer_cases 三表 DDL

三大场景全部完成,均通过真实 UI 端到端验证(录入 → 自动判别 → 入库 → 查询 → 导出)。

离线训练(复现模型产物)

python models/train_students.py   # 场景1:聚类对比 + 择优 + 出图
python models/train_house.py      # 场景2:回归对比 + 调参 + 出图
python models/train_cancer.py     # 场景3:分类对比 + 调参 + 出图(ROC/混淆矩阵)

产物写入 artifacts/<scene>/model.joblib(模型)、metrics.json(指标/理由)、*.png(图表)。 前端启动时若缺少产物会自动触发一次离线训练作为兜底。

兼容性说明(Python 3.7)

本仓库代码全部按 Python 3.7 语法编写(不使用 walrus、match 等 3.8+ 语法)。但新版 streamlit / pandas 仅支持 Python ≥ 3.9。若必须在 3.7 运行,请改用 requirements.txt 文末注释里的旧版本组合(已验证可在 3.7 安装)。

About

ai实训

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages