基于python使用两种方式计算预测模型交叉验证AUC值

本文介绍了两种计算AUC(曲线下面积)的方法:一是使用交叉验证的平均概率,二是将所有折叠的预测概率汇总。通过这两个步骤,作者展示了如何评估和优化逻辑回归模型的性能。
摘要由CSDN通过智能技术生成
#方法一:使用各折交叉验证的平均概率计算AUC
tprs = []
aucs = []
mean_fpr = np.linspace(0, 1, 100)
thresholds = []

for i, (train, test) in enumerate(cv.split(X, y)):
    lr.fit(X[train], y[train])
    y_proba = lr.predict_proba(X[test])
    y_proba = y_proba[:,1]
    fpr,tpr,threshold = metrics.roc_curve(y[test],y_proba)
    roc_auc = metrics.auc(fpr,tpr)
    viz = metrics.RocCurveDisplay(fpr=fpr,tpr=tpr,roc_auc = roc_auc)
    interp_tpr = np.interp(mean_fpr,fpr,tpr)
    interp_tpr[0] = 0.0
    tprs.append(interp_tpr)
    thresholds.append(threshold)
    aucs.append(roc_auc)


mean_tpr = np.mean(tprs, axis=0)
mean_tpr[-1] = 1.0
mean_auc = auc(mean_fpr, mean_tpr)

print(mean_auc)


#方法二:将各折交叉验证的概率汇总计算AUC值
prob_fold = []
real_fold = []
roc_fold = 0
for i, (train,test) in enumerate (cv.split(X,y)):
    lr.fit(X[train],y[train])
    y_proba = lr.predict_proba(X[test])#每一折的预测值
    
    prob_fold.append(y_proba)
    real_fold.append(y[test])#十折预测值和真实值
    
    fpr,tpr,threshold = metrics.roc_curve(y[test],y_proba[:,1])
    roc_auc = auc(fpr,tpr)#每折roc
    roc_fold += roc_auc #10折auc相加

prob_fold = np.concatenate(prob_fold)
real_fold = np.concatenate(real_fold)
mean_auc = roc_fold / i
print(mean_auc)

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值