医疗 AI 败血症预测算法全流程实现与代码解析
在医疗 AI 的实际落地中,从数据到模型再到部署的闭环至关重要。我们整合了经典机器学习算法的原理、数据处理、特征工程、模型评估及可解释性等关键技术,以 ICU 败血症早期预警系统为例,梳理出一套完整的端到端 Python 实现方案。
这套流程涵盖了从模拟生成符合 MIMIC-III 分布的数据集开始,经过预处理与特征工程,训练逻辑回归、随机森林及 XGBoost 等多模型,并通过 Stacking 进行融合。此外,还包含超参数调优、不平衡处理、AUC 与 PR AUC 等指标评估、SHAP 可解释性分析,以及阈值选择与决策曲线,最后提供模型保存与简单 API 示例。
以下代码结构可作为医疗 AI 项目的基础架构参考,实际运行时需确保相关依赖库已安装。
核心代码实现
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score, classification_report
import xgboost as xgb
import shap
# 1. 数据模拟与预处理
# 这里模拟生成符合 MIMIC-III 分布的数据,实际项目中请替换为真实数据加载
# 注意:医疗数据通常存在缺失值,需要合理的插补策略
print("正在初始化数据...")
data = generate_synthetic_data()
data = preprocess_data(data)
# 2. 多模型训练与融合
# 逻辑回归作为基线,XGBoost 捕捉非线性关系
# Stacking 融合能进一步提升泛化能力
models = {
'lr': LogisticRegression(),
'rf': RandomForestClassifier(),
'xgb': XGBClassifier()
}
stacked_model = StackingClassifier(estimators=list(models.items()))
stacked_model.fit(X_train, y_train)
# 3. 模型评估与不平衡处理
# 医疗场景下正负样本往往不平衡,需关注 PR AUC 而非单纯 Accuracy
y_pred_proba = stacked_model.predict_proba(X_test)[:, 1]
auc = roc_auc_score(y_test, y_pred_proba)
print(f"Model AUC: {auc:.4f}")
# 4. 可解释性分析 (SHAP)
# 医生不仅关心结果,更关心依据。SHAP 值能解释每个特征的贡献
explainer = shap.TreeExplainer(stacked_model.best_estimator_)
shap_values = explainer.shap_values(X_test)
shap.summary_plot(shap_values, X_test)
optimal_threshold = select_optimal_threshold(y_test, y_pred_proba)
save_model(stacked_model, )


