结合 RepeatedStratifiedKFold 和 crossval

数据挖掘 Python 交叉验证
2022-03-13 18:51:29

可以结合 RepeatedStratifiedKFold 和 cross_val_score 吗?

以下示例中的结果是 30 个准确度值(3x10 分割)。如何计算 3 倍 10 倍 cv 的最终准确度值?

cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=rand)
rf = RandomForestClassifier(n_estimators=e, random_state=rand)
scores = cross_val_score(rf, data, Y, scoring='accuracy', cv=cv, n_jobs=-1)
1个回答

我发现了一篇关于重复交叉验证的最新论文:

关于通过重复交叉验证估计模型精度

它指出:如果Ai是单次k折交叉验证返回的结果,那么整个重复交叉验证(n次重复)的交叉验证结果为:A=iAin.

所以要计算最终分数,我们需要一个“块”函数:(来自stackoverflow的代码

def chunks(lst, n):
    means = []
    """Yield successive n-sized chunks from lst."""
    for i in range(0, len(lst), n):
        means.append(np.mean(lst[i:i + n]))
    return means

然后可以通过以下方式计算最终分数:

np.mean(chunks(scores, n_splits))