如何引导数据集获得 10000 AUC 分数?

数据挖掘 机器学习 深度学习 统计数据 交叉验证 机器学习模型
2022-02-22 01:48:35

我是 ML 的新手,正在尝试学习其中的细微差别。我处理 5K 记录的二进制分类问题。标签 1 是 1554,标签 0 是 3554。

我目前做的是

1)将数据分成训练(70%)和测试(30%)

2) 启动模型 --> logreg=LogisticRegression(random_state=41)

3) 运行 10 倍 cv --> logreg_cv=GridSearchCV(logreg,op_param_grid,cv=10,scoring='f1')

4) 拟合模型 --> logreg_cv.fit(X_train_std,y_train)

5) 做预测 --> y_pred = logreg_cv.predict(X_test_std)

现在我的问题是,如何生成 10000 AUC 分数。

我读到人们通常会这样做以获得他们的训练和测试性能 AUC 分数的置信区间。

所以,我想知道如何做到这一点?

我知道引导程序意味着生成随机样本并从同一数据集中替换。但是我们仍然需要将它们分成训练和测试吗?但这看起来与 CV 没有什么不同。我们如何生成 10000 个 AUC 并获得置信区间?

你能帮我吗?

1个回答

在这个stats exchange 问题中,您可以看到有关何时使用 bootstrap over CV 的问题的答案。

您可以在此链接中查看如何在 Python 中执行 Bootstrap 的简单教程

如何生成 10k AUC 分数? AUC 是一个性能指标,您要衡量的是模型 10k 次的性能。为此,您必须选择您考虑的样本数量的 10k 倍并测量 AUC

for i in range(0,10_000):
    sample = df.sample(df.shape[0]/10,random_state=i)
    X = df.drop(columns='target')
    y = df.target
    preds = logreg.predict(X)
    print(roc_auc_score(preds,y))