K-2 交叉验证是否本质上等于 50:50 的训练测试拆分?
Is K-2 cross-validation essentially equal to train-test split of 50:50?
我正在处理一个数据项目任务,要求我使用 50% 的数据进行训练,其余 50% 的数据用于测试。我想使用交叉验证的魔力并且仍然满足上述条件。
目前,我的代码如下:
clf = LogisticRegression(penalty='l2', class_weight='balanced'
tprs = []
aucs = []
mean_fpr = np.linspace(0, 1, 100)
#cross validation
cv = StratifiedKFold(n_splits=2)
i = 0
for train, test in cv.split(X, y):
probas_ = clf.fit(X[train], y[train]).predict_proba(X[test])
# Compute ROC curve and area the curve
fpr, tpr, thresholds = roc_curve(y[test], probas_[:, 1])
tprs.append(interp(mean_fpr, fpr, tpr))
tprs[-1][0] = 0.0
roc_auc = auc(fpr, tpr)
aucs.append(roc_auc)
i += 1
print("Average AUC: ", sum(aucs)/len(aucs),"AUC: ", aucs[-1],)
由于我只使用了 2 个拆分,是否认为我正在使用 50:50 的训练测试拆分?或者我应该先将数据拆分为 50:50 然后在训练部分使用交叉验证,最后使用该模型测试剩余的 50% 的测试数据?
你应该实施你的第二个建议。
应该使用交叉验证来调整方法的参数。其中,您示例中的此类参数是 C
参数的值和逻辑回归的 class_weight='balanced'
。所以你应该:
- 分成 50% 训练,50% 测试
- 使用训练数据 select 通过交叉验证
模型参数的最优值
- 用训练数据的最佳参数重新拟合模型
- 预测测试数据并报告您 selected
的评估指标得分
注意,你应该使用测试数据只报告最终分数而不是调整模型,否则你就是作弊。想象一下,实际上您可能要到最后一刻才能访问它们,所以您不能使用它们。
我正在处理一个数据项目任务,要求我使用 50% 的数据进行训练,其余 50% 的数据用于测试。我想使用交叉验证的魔力并且仍然满足上述条件。
目前,我的代码如下:
clf = LogisticRegression(penalty='l2', class_weight='balanced'
tprs = []
aucs = []
mean_fpr = np.linspace(0, 1, 100)
#cross validation
cv = StratifiedKFold(n_splits=2)
i = 0
for train, test in cv.split(X, y):
probas_ = clf.fit(X[train], y[train]).predict_proba(X[test])
# Compute ROC curve and area the curve
fpr, tpr, thresholds = roc_curve(y[test], probas_[:, 1])
tprs.append(interp(mean_fpr, fpr, tpr))
tprs[-1][0] = 0.0
roc_auc = auc(fpr, tpr)
aucs.append(roc_auc)
i += 1
print("Average AUC: ", sum(aucs)/len(aucs),"AUC: ", aucs[-1],)
由于我只使用了 2 个拆分,是否认为我正在使用 50:50 的训练测试拆分?或者我应该先将数据拆分为 50:50 然后在训练部分使用交叉验证,最后使用该模型测试剩余的 50% 的测试数据?
你应该实施你的第二个建议。
应该使用交叉验证来调整方法的参数。其中,您示例中的此类参数是 C
参数的值和逻辑回归的 class_weight='balanced'
。所以你应该:
- 分成 50% 训练,50% 测试
- 使用训练数据 select 通过交叉验证 模型参数的最优值
- 用训练数据的最佳参数重新拟合模型
- 预测测试数据并报告您 selected 的评估指标得分
注意,你应该使用测试数据只报告最终分数而不是调整模型,否则你就是作弊。想象一下,实际上您可能要到最后一刻才能访问它们,所以您不能使用它们。