gondakly/Intelligent-Programming-final-project_Heart_Detection
GitHub: gondakly/Intelligent-Programming-final-project_Heart_Detection
一个融合规则专家系统与决策树的心脏病风险预测系统,提供可解释的风险评估与可视化分析。
Stars: 0 | Forks: 0
# 心脏病检测系统
一个结合了**基于规则的专家系统**和**决策树机器学习模型**的混合心血管风险评估系统,具备 Streamlit 网页界面。
# 心脏病数据集描述
## 1. 项目背景
该数据集用于构建一个心脏病诊断工具。它将患者的人口统计学数据与临床检测结果相结合,以对患者的风险等级进行分类。
## 2. 统计摘要
| 特征 | 数据类型 | 平均值 | 最小值 | 最大值 | 缺失值 |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **年龄 (Age)** | int64 | 54.43 | 29 | 77 | 0 |
| **静息血压 (Trestbps)** | int64 | 131.61 | 94 | 200 | 0 |
| **胆固醇 (Cholesterol)** | int64 | 246.00 | 126 | 564 | 0 |
| **最大心率 (Thalach)** | int64 | 149.11 | 71 | 202 | 0 |
| **ST段压低 (Oldpeak)** | float64 | 1.07 | 0.0 | 6.2 | 2 |
## 3. 属性信息
- **性别 (Sex)**: (1 = 男性; 0 = 女性)
- **胸痛类型 (cp)**: 疼痛类型 (0-3)。值 0 为典型心绞痛,而 3 为无症状。
- **空腹血糖 (fbs)**: > 120 mg/dl 记为 1。
- **运动诱发心绞痛 (exang)**: 运动导致心绞痛 (1 = 是)。
- **Ca**: 在荧光透视下可见的主要血管数量 (0-4)。数值越高通常风险越高。
- **目标变量 (Target)**: 预测属性。0 = 低风险(无疾病),1 = 高风险(心脏病)。
## 4. 观察
- 数据集中心脏病 (51.3%) 与无心脏病 (48.7%) 的分布相对平衡。
- `restecg` 和 `oldpeak` 中存在少量缺失值,需要在处理步骤中进行中位数/均值填补。
- `thalach`(最大心率)和 `cp`(胸痛类型)等特征与目标变量高度相关。
## 安装
```
pip install -r requirements.txt
streamlit run ui/app.py
```
## 运行每个步骤
```
# 步骤 2 — 可视化(5 张图)
python notebooks/data_visualization.py
# 步骤 4 — 训练决策树
python ml_model/train_model.py
# 步骤 5 — 比较系统
python reports/generate_comparison.py
# 步骤 3+4+5 — 完整的 Streamlit UI
streamlit run ui/app.py
# Expert System CLI(交互式)
python rule_based_system/expert_system.py
```
## 使用的特征
| 特征 | 描述 |
|---------|-------------|
| `oldpeak` | ST段压低(归一化 0–1) |
| `exang` | 运动诱发心绞痛 (0/1) |
| `thalach` | 最大心率(归一化 0–1) |
| `cp` | 胸痛类型 (0=无症状 … 3=典型) |
| `ca` | 显影血管数量 (0–4) |
| `thal` | 地中海贫血类型 (0=未知, 1=正常, 2=固定, 3=可逆) |
| `slope` | ST段斜率 (0=下降, 1=平坦, 2=上升) |
| `sex` | 1=男性, 0=女性 |
## 专家系统规则 (12 条)
| # | 条件 | 风险 |
|---|-----------|------|
| 1 | 运动诱发心绞痛 (exang=1) | 高 |
| 2 | ST段压低 > 0.4 | 高 |
| 3 | 主要血管 ≥ 2 | 高 |
| 4 | 可逆性地中海贫血 (thal=3) | 高 |
| 5 | 男性无症状胸痛 | 高 |
| 6 | 最大心率 < 0.35 (极低) | 高 |
| 7 | 下斜型 ST 段 (slope=0) | 中 |
| 8 | 1 根血管显影 (ca=1) | 中 |
| 9 | 男性中度 ST 段压低 | 中 |
| 10 | 低心率 + 平坦斜率 | 中 |
| 11 | 固定地中海贫血 (thal=2) | 中 |
| 12 | 全部正常 | 低 |
标签:AI预测, Apex, Experta, Kubernetes, Scikit-Learn, Streamlit, 专家系统, 临床数据, 云计算, 交互式UI, 决策树, 分类算法, 医学诊断, 心脏病预测, 心血管疾病, 数据预处理, 机器学习, 模型比较, 模型评估, 混合系统, 特征工程, 统计可视化, 缺失值处理, 规则引擎, 访问控制, 逆向工具