项目总结与完整 Python 程序
通过本书的学习,我们从医疗 AI 的基础知识出发,系统掌握了经典机器学习算法的原理与医疗应用,深入探讨了数据处理、特征工程、模型评估、可解释性、不平衡问题处理、模型融合等进阶技术。在第 16 章中,我们以 ICU 败血症早期预警系统为例,完整演示了从问题定义到模型部署的全流程。
现在,我们将所有这些知识整合为一个统一的 Python 程序,实现败血症预测的端到端流程。该程序可直接运行(需安装相关库),可作为医疗 AI 项目的参考模板。
核心功能模块
本程序涵盖以下关键环节:
- 模拟数据生成:构建符合 MIMIC-III 分布的特征数据集,解决真实数据隐私获取难的问题。
- 数据预处理:处理缺失值、异常值及类别编码。
- 多模型训练:对比逻辑回归、随机森林、XGBoost 的表现。
- 模型融合:采用 Stacking 策略集成多个基模型。
- 超参数调优:结合网格搜索与不平衡样本处理。
- 模型评估:AUC、PR AUC、分类报告及混淆矩阵。
- 可解释性分析:利用 SHAP 值解析特征贡献。
- 决策支持:阈值选择与决策曲线分析。
- 部署准备:模型序列化保存与简单 API 示例。
完整代码实现
下面是一个结构化的实现方案。为了保持代码清晰,我们将其分为数据层、模型层和评估层。
1. 环境与依赖
确保已安装必要的库:
pip install pandas numpy scikit-learn xgboost shap flask
2. 数据模拟与预处理
在真实场景中,直接访问 MIMIC-III 需要伦理审批。这里我们使用合成数据来演示流程,重点在于特征工程的逻辑。
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, LabelEncoder
from imblearn.over_sampling import SMOTE
def generate_sepsis_data(n_samples=5000):
"""模拟生成符合 MIMIC-III 分布的数据集"""
np.random.seed(42)
data = {
'age': np.random.normal(65, 15, n_samples),
'heart_rate': np.random.normal(, , n_samples),
: np.random.normal(, , n_samples),
: np.random.normal(, , n_samples),
: np.random.normal(, , n_samples),
: np.random.normal(, , n_samples)
}
df = pd.DataFrame(data)
df.loc[np.random.choice(df.index, size=(n_samples*)), ] = np.nan
risk_score = (df[] > ).astype() + \
(df[] < df[] > ).astype() + \
(df[].fillna() > ).astype()
df[] = (risk_score >= ).astype()
df
():
df[] = df[].fillna(df[].median())
scaler = StandardScaler()
feature_cols = [, , , , , ]
df[feature_cols] = scaler.fit_transform(df[feature_cols])
X = df[feature_cols]
y = df[]
X, y, scaler


