AI源码
AI源码AI 精选 · 优质源码 · 助力学习

基于 Apriori 算法的中药配伍审查系统

本系统是一个基于经典 Apriori 关联规则挖掘算法的中药配伍审查平台,使用真实中医药处方数据集(PTM-TKDE2018),实现药材频繁项集挖掘、关联规则生成与配伍禁忌审查。

评分:4.8/5.0
销量:40
发布:2026/6/5
难度:L2 进阶级
💬 联系咨询观看视频介绍
永久使用权限
免费更新维护
技术支持服务

项目封面

截图 1

项目说明

基于 Apriori 算法的中药配伍审查系统

项目介绍

本系统是一个基于经典 Apriori 关联规则挖掘算法的中药配伍审查平台,使用真实中医药处方数据集(PTM-TKDE2018),实现药材频繁项集挖掘、关联规则生成与配伍禁忌审查。

核心功能

  • 数据导入:一键下载并导入真实 PTM 处方数据集到 SQLite(约 811 味药材、6693 条处方事务)
  • Apriori 挖掘:频繁项集与关联规则挖掘,支持度/置信度/提升度(lift)可调
  • 配伍审查:十八反/十九畏禁忌检测 + 低支持度警告 + 关联规则建议(含药名别名匹配)
  • 批量审查:支持多张处方批量审查
  • 药材共现分析:指定药材的共现频次统计
  • 数据看板:Chart.js 可视化展示高频药材与挖掘历史
  • REST API:14 个 API 端点,完整覆盖业务功能
  • 审查日志挖掘历史记录

数据来源

数据来源用途
药材与处方事务PTM-TKDE2018 herbs_contains.txt + pre_herbs.txtApriori 事务挖掘
配伍禁忌data/forbidden_canonical.json(药典十八反、十九畏整理,41 条)硬性禁忌审查
药材属性(可选)DragonTCM性味归经增强

仅供教学研究,不可替代临床审方。


目录结构

apriori-zhongyao-check/
├── app.py                  # Flask 主应用(路由定义 + 启动入口)
├── config.py               # 应用配置(阈值、数据库路径、分页等)
├── requirements.txt        # Python 依赖
├── mac_run.sh              # macOS 一键启动脚本
├── window_run.bat          # Windows 一键启动脚本
├── 项目说明.md              # 本文件
├── 挖掘手册.md              # Apriori 挖掘参数与数据集说明
│
├── core/                   # 核心算法
│   ├── __init__.py
│   ├── apriori.py          #   Apriori 频繁项集与关联规则挖掘
│   └── reviewer.py         #   配伍审查逻辑(禁忌检测 + 关联建议 + 同义词标注)
│
├── database/               # 数据库层
│   ├── __init__.py
│   ├── db.py               #   SQLite 访问层(连接管理 + 缓存 + 全部 CRUD)
│   └── importer.py         #   数据导入(PTM 文件解析 + 禁忌规则写入)
│
├── routes/                 # 路由层
│   ├── __init__.py
│   └── api.py              #   REST API 蓝图(14 个端点)
│
├── services/               # 服务层
│   ├── __init__.py
│   └── mining.py           #   Apriori 挖掘服务(参数回退 + 结果持久化)
│
├── scripts/                # 运维脚本
│   ├── download_datasets.py#   从 GitHub/HuggingFace 下载数据集
│   ├── setup_all.py        #   一键:下载 → 导入 → 挖掘
│   └── init_and_mine.py    #   初始化数据库 + 执行挖掘
│
├── data/                   # 数据目录
│   ├── forbidden_canonical.json  # 十八反/十九畏禁忌规则
│   ├── tcm.db              # SQLite 数据库(运行时生成)
│   ├── raw/                # 原始数据文件
│   │   ├── herbs_contains.txt    # PTM 药材名索引(811 行)
│   │   ├── pre_herbs.txt         # PTM 处方事务(数值索引,7189 行)
│   │   └── prescriptions.txt     # PTM 原始文本方(98334 行,未接入导入)
│   └── imported/           # 已导入数据备份目录
│
├── templates/              # Jinja2 HTML 模板(12 个页面)
│   ├── base.html           #   基础布局(导航栏 + 页脚)
│   ├── index.html          #   首页(统计概览 + 高频药材图表)
│   ├── dashboard.html      #   数据看板(挖掘历史 + 审查日志)
│   ├── check.html          #   单方配伍审查
│   ├── batch.html          #   批量配伍审查
│   ├── herbs.html          #   药材库列表
│   ├── herb_detail.html    #   药材详情 + 共现分析
│   ├── prescriptions.html  #   方剂库列表
│   ├── forbidden.html      #   十八反/十九畏规则表
│   ├── rules.html          #   Apriori 关联规则 + 频繁项集 + 重新挖掘
│   ├── dataset.html        #   数据集说明
│   └── api_docs.html       #   REST API 文档
│
├── static/
│   └── css/style.css       # 自定义样式
│
└── 运行步骤必看/
    └── window.md            # Windows 运行步骤说明

运行环境

项目要求
Python>= 3.12
操作系统macOS / Linux / Windows
数据库SQLite 3(Python 内置,无需额外安装)
网络首次运行需联网下载 PTM 数据集
依赖Flask >= 3.0、Werkzeug >= 3.0、datasets >= 2.14(可选)

端口与访问

项目
默认端口5050
环境变量覆盖PORT
访问地址http://127.0.0.1:5050
API 文档http://127.0.0.1:5050/api-docs

技术架构

浏览器 ←→ Flask (Jinja2 模板 + REST API)
              ↕
         SQLite (tcm.db)
              ↕
    Apriori 算法 + 禁忌审查引擎
              ↕
    PTM-TKDE2018 真实处方数据集

模块职责

模块文件职责
主应用app.pyFlask 应用工厂、页面路由、启动入口、自动引导挖掘
配置config.py最小支持度/置信度/提升度、数据库路径、分页大小、密钥
算法core/apriori.pyApriori 频繁项集挖掘与关联规则生成
审查core/reviewer.py禁忌规则检测、低支持度警告、关联规则建议、同义词标注
数据库database/db.py连接管理(上下文管理器)、事务缓存、全部 CRUD 操作
导入database/importer.pyPTM 文件解析、药材/处方入库、禁忌规则写入、配置持久化
APIroutes/api.pyREST API 蓝图,14 个端点,JSON 输入输出
挖掘服务services/mining.py封装 Apriori 执行、参数回退、结果持久化、缓存失效
下载scripts/download_datasets.py从 GitHub/HuggingFace 下载数据集到 data/raw/
初始化scripts/init_and_mine.py建表 → 导入 → 挖掘(三步合一)
一键部署scripts/setup_all.py下载 → 导入 → 挖掘(四步合一)

页面功能

页面路由功能
首页/统计概览(药材数/处方数/规则数)、Top 20 高频药材柱状图
配伍审查/check输入药材名 → 返回禁忌/警告/建议
批量审查/batch多处方批量审查
药材库/herbs药材列表(分页、搜索)
药材详情/herbs/<name>单味药材共现分析、关联规则
方剂库/prescriptions处方列表(分页、搜索)
禁忌规则/forbidden十八反/十九畏规则表
关联规则/rules关联规则表 + 频繁项集 + 重新挖掘(参数可调)
数据看板/dashboard挖掘历史趋势、审查日志
数据集/datasetPTM 数据集说明
API 文档/api-docsREST API 端点文档

REST API 列表

方法路径功能
GET/api/statistics系统统计(药材数/处方数/规则数等)
POST/api/review单方配伍审查 {"herbs": ["甘草","海藻"]}
POST/api/review/batch批量审查 {"prescriptions": [["甘草","海藻"],["人参","黄芪"]]}
GET/api/herbs药材列表(分页、搜索)
GET/api/herbs/<name>药材详情与共现
GET/api/prescriptions处方列表(分页、搜索)
GET/api/forbidden十八反/十九畏规则
GET/api/rules关联规则列表(分页)
GET/api/itemsets频繁项集列表(分页)
POST/api/mine重新执行 Apriori 挖掘
GET/api/config获取当前挖掘参数
GET/api/dataset-meta数据集元信息
GET/api/mining-history挖掘历史
GET/api/review-logs审查日志

算法说明

Apriori 算法

Apriori 是经典的关联规则挖掘算法,核心思想:如果一个项集是频繁的,则它的所有子集也是频繁的(Apriori 性质)。算法流程:

  1. 扫描事务数据库,统计每个单项的支持度,过滤低于 min_support 的项
  2. 逐层产生候选项集:由 k-频繁项集连接生成 (k+1)-候选项集
  3. 剪枝:移除包含非频繁 k-子集的候选项集
  4. 计数:再次扫描数据库,统计候选项集支持度
  5. 重复直到无法生成更大的频繁项集(受 max_k 限制)
  6. 生成规则:对每个频繁项集,计算所有非空子集的置信度和提升度,保留满足 min_confidencemin_lift 的规则

关键参数

参数默认值说明
min_support0.02最小支持度,项集至少在 2% 的处方中出现
min_confidence0.5最小置信度,规则 A→B 的置信度至少 50%
min_lift1.0最小提升度,大于 1 表示正相关
max_k4最大项集大小,防止组合爆炸

审查逻辑

配伍审查分三层检测:

  1. 禁忌层(硬性):十八反/十九畏,命中即标记为 forbidden
  2. 警告层(软性):药材组合的支持度低于 min_support,标记为 warning
  3. 建议层(参考):与已输入药材相关的关联规则,标记为 info;同义词对额外标注 ⚠可能是同义词/包含关系

数据流程

PTM 数据集 (GitHub/HuggingFace)
        ↓  scripts/download_datasets.py
data/raw/herbs_contains.txt + pre_herbs.txt
        ↓  database/importer.py
SQLite (tcm.db): herbs + prescriptions + forbidden_rules
        ↓  core/apriori.py + services/mining.py
SQLite: frequent_itemsets + association_rules + apriori_config
        ↓  core/reviewer.py
配伍审查结果 (forbidden / warning / info)
        ↓  routes/api.py + app.py
浏览器 (HTML / JSON)

技术分类

包含内容

完整源码
项目说明文档
演示材料

适用人群

学习参考与二次开发

关于 AI源码

AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。

QQ: 861077046
邮箱: 861077046@qq.com
已服务 40+ 位用户
立即咨询

相关推荐

查看全部 →
城市交通流量预测与拥堵成因分析系统
Python
进阶

城市交通流量预测与拥堵成因分析系统

是一个面向城市交通拥堵分析的 monorepo,覆盖计算机设计课题中的主要能力链路:

PythonHTMLSQLite
4.820
电商用户行为漏斗与CRO转化率优化分析
Python
NEW
进阶

电商用户行为漏斗与CRO转化率优化分析

电商用户行为漏斗与CRO转化率优化分析(E-Commerce Funnel CRO)是一套面向电商运营的数据分析平台,覆盖从用户访问到最终购买的完整漏斗链路,提供多维诊断、统计检验、PIE 优先级矩阵与 XGBoost 购买预测等能力,帮助运营团队精准定位转化瓶颈并制定优化策略。

PythonHTMLSQLite
4.866
多组学癌症预后预测分析系统
Python
进阶

多组学癌症预后预测分析系统

基于 Flask 的 Web 应用,用于上传 TCGA 风格合并表、做特征与标签概览、Cox 预后风险评分与生存相关可视化。模型在本地训练后以 形式加载,不提供旧版演示数据或假模型兜底。

PythonHTMLSQLite
4.834
基于 Python 的城市共享单车骑行需求时空分析系统
Python
NEW
进阶

基于 Python 的城市共享单车骑行需求时空分析系统

本系统是一个基于 Python Flask 框架的城市共享单车骑行需求时空分析平台,使用 Oslo City Bike(奥斯陆城市自行车)开放数据,提供系统总览、时间维度分析、空间维度分析、站点运营分析、OD 起讫流动分析、骑行需求预测、综合分析报告等功能模块,适用于城市共享单车运营调度与骑行需求研究场景。

PythonHTMLSQLite
4.857
基于 Python 的短视频用户行为分析系统
Python
NEW
进阶

基于 Python 的短视频用户行为分析系统

基于快手 KuaiRec / KuaiRand 数据集的短视频推荐分析平台,提供用户行为分析、推荐偏差检测、内容运营洞察、图神经网络推荐等完整分析链路。

PythonHTMLSQLite
4.875
基于 Python 的汽车市场数据分析与可视化平台
Python
NEW
进阶

基于 Python 的汽车市场数据分析与可视化平台

本平台是一个基于 Python Flask 框架的汽车市场数据分析与可视化系统,整合了多个真实汽车市场数据集,提供数据概览、车辆检索、多维分析、价格预测、品牌对比、技术规格分析、销量统计等功能模块,适用于汽车市场趋势研究和二手车价格预测场景。

PythonHTMLSQLite
4.894