python算出AUC的置信区间
时间: 2023-12-08 15:39:08 浏览: 159
可以使用scikit-learn库中的roc_auc_score函数来计算AUC,并使用resample函数从原始数据集中生成新的样本来计算AUC的多次评估。通过计算足够多的评估值,可以得到AUC的置信区间。下面是一个示例代码:
```python
from sklearn.metrics import roc_auc_score
from sklearn.utils import resample
import numpy as np
# 假设原始数据集为X和y
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
y = np.array([0, 0, 1, 1])
# 定义计算AUC的函数
def auc_with_ci(X, y, n_bootstraps=1000, ci_alpha=0.95):
aucs = []
for i in range(n_bootstraps):
X_resampled, y_resampled = resample(X, y)
y_pred = np.random.rand(len(y_resampled))
auc = roc_auc_score(y_resampled, y_pred)
aucs.append(auc)
lower_ci = np.percentile(aucs, (1 - ci_alpha) / 2 * 100)
upper_ci = np.percentile(aucs, (1 + ci_alpha) / 2 * 100)
return np.mean(aucs), (lower_ci, upper_ci)
# 计算AUC及其置信区间
auc, ci = auc_with_ci(X, y)
print("AUC: {:.3f}, 95% CI: ({:.3f}, {:.3f})".format(auc, ci[0], ci[1]))
```
上述代码中,我们使用resample函数从原始数据集中生成新的样本,并使用roc_auc_score函数计算AUC。我们重复这个过程多次,得到足够多的AUC评估值。最后,我们使用numpy库中的percentile函数计算AUC的置信区间。
阅读全文