如何实施10倍交叉验证?

时间:2018-11-18 02:49:47

标签: java machine-learning cross-validation

我有一个代码可以对数据集执行10倍交叉验证。通过将数据分为k-1个部分进行训练,其余部分进行测试来创建代码。我想看看我的代码是否正确 我的代码是:

 Dataset data = data1;
        Dataset[] folds = data.folds((10), new Random(100));
        Dataset training = new DefaultDataset();
        Dataset testing = new DefaultDataset();
        int[] tr = {0, 2, 3, 4,5, 6,7, 8, 9};
        int[] te = {1};   
        for (int i = 0; i < tr.length; i++) {
            training.addAll(folds[tr[i]]);
        }
        for (int i = 0; i < te.length; i++) {
            testing.addAll(folds[te[i]]);
        }

1 个答案:

答案 0 :(得分:2)

假设代码行

data.folds((10), new Random(100));

正确采样了10%的数据,并将所有10折返回给输出变量,从而分离出看起来正确的数据集。

但是,您应该记住要重复k次以进行k倍交叉验证和平均结果。

k iterations for k fold cross validation

来源:https://en.wikipedia.org/wiki/Cross-validation_(statistics)#/media/File:K-fold_cross_validation_EN.jpg