逻辑回归模型评估HbA1c区间区分度及灵敏度计算方法
实现方案
你当前的二分类标签只区分了HbA1c<5.7%的健康人群和HbA1c≥5.7%的异常人群,要拆分糖前、2型糖两个亚组并分别计算灵敏度,核心是要保留测试集样本对应的原始HbA1c检测值,不需要改动原有模型训练逻辑,直接复用你已经训练好的逻辑回归模型即可。
步骤1:拆分测试集亚组
确保测试集和原始HbA1c值的样本顺序一一对应,按临床阈值切分为三个互斥集合:
- 健康人群:HbA1c < 5.7%,即你现有
y_test=0的全部样本 - 糖尿病前期人群:5.7% ≤ HbA1c ≤ 6.4%,属于
y_test=1的子集 - 2型糖尿病人群:HbA1c > 6.4%,属于
y_test=1的另一个子集
注意:不要修改原有训练集的标签定义,模型还是按照原任务(识别HbA1c>5.7%的异常人群)训练即可,不需要重新训练多分类模型。
步骤2:获取全测试集预测结果
和你现有评估逻辑一致,用训练好的LGR模型输出测试集所有样本的二分类预测结果y_pred,保持默认0.5分类阈值不变即可。
步骤3:分亚组计算灵敏度
灵敏度的计算逻辑是「真实为阳性的样本中被模型正确判为阳性的比例」,两个亚组分别计算即可:
- 糖尿病前期灵敏度:糖前组样本中,预测结果为1(判定为异常)的样本占比
- 2型糖尿病灵敏度:2型糖组样本中,预测结果为1(判定为异常)的样本占比
可直接复用的补充代码
你只需要在现有代码基础上补充以下片段即可,注意提前把测试集对应的原始HbA1c值存为test_hba1c(数组或Pandas Series格式,和X_test、y_test的样本顺序完全对应):
# 原有模型训练逻辑保持不变 LGR.fit(X_train, y_train) y_pred = LGR.predict(X_test) # 生成两个亚组的样本掩码 mask_pre_diabetes = (test_hba1c >= 5.7) & (test_hba1c <= 6.4) mask_t2d = test_hba1c > 6.4 # 分亚组计算灵敏度 sensitivity_pre_dm = y_pred[mask_pre_diabetes].sum() / mask_pre_diabetes.sum() sensitivity_t2d = y_pred[mask_t2d].sum() / mask_t2d.sum() # 输出结果 print(f"糖尿病前期人群识别灵敏度: {sensitivity_pre_dm:.4f}") print(f"2型糖尿病人群识别灵敏度: {sensitivity_t2d:.4f}")
结果参考
你当前跑出的整体灵敏度0.7439,是两个亚组灵敏度的加权平均值(权重为两个亚组在所有异常样本中的占比)。通常2型糖尿病人群的指标异常特征更显著,模型对这类人群的识别灵敏度会明显高于糖尿病前期人群。
内容的提问来源于stack exchange,提问作者Ottemain
相关产品推荐
相关产品推荐

