#方法一:使用各折交叉验证的平均概率计算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)
基于python使用两种方式计算预测模型交叉验证AUC值
最新推荐文章于 2024-06-12 13:21:53 发布
本文介绍了两种计算AUC(曲线下面积)的方法:一是使用交叉验证的平均概率,二是将所有折叠的预测概率汇总。通过这两个步骤,作者展示了如何评估和优化逻辑回归模型的性能。
摘要由CSDN通过智能技术生成