реализация 10 перекрестной проверки (10CV) - PullRequest
0 голосов
/ 05 апреля 2019

Я работаю в PSO для выбора функций.Я использую алгоритм KNN с 10 перекрестной проверки для оценки.до того, как я использую 10cv, алгоритм довольно дешев, что означает отсутствие высоких вычислительных затрат, но после перехода на 10cv код работает слишком медленно, иногда в течение нескольких дней.Могу ли я узнать, если есть какие-либо проблемы в выполнении 10cv.Я использую следующий код для выполнения 10 cv:

dataset data = FileHandler.loadDataset(new File(dataSetFileName+".csv"), noFeatures, ","); 
                //crossvalidationmat
                  int[][] crossvalidationmat= { 
                    {1,2,3,4,5,6,7,8,9}, 
                    {0,2,3,4,5,6,7,8,9}, 
                    {0,1,3,4,5,6,7,8,9},
                    {0,1,2,4,5,6,7,8,9}, 
                    {0,1,2,3,5,6,7,8,9},
                    {0,1,2,3,4,6,7,8,9},
                    {0,1,2,3,4,5,7,8,9},
                    {0,1,2,3,4,5,6,8,9},
                    {0,1,2,3,4,5,6,7,9},
                    {0,1,2,3,4,5,6,7,8},
                    };
        Dataset[] folds = data.folds((10), new Random(1));
        Dataset training = new DefaultDataset();    //training, testing
        Dataset testing = new DefaultDataset();   
        int[] tr =new int[9];
        int[] te = new int[1]; 
for (int di = 0; di < crossvalidationmat.length; di++) { // start crossvalidation
       System.out.println(crossvalidationmat[di].length);
for (int xj = 0; xj < crossvalidationmat[di].length; xj++) { 
         tr[xj]=crossvalidationmat[di][xj];
         System.out.print(tr[xj]);
    }
    te[0]=di;
    System.out.println("\nTraing  te[0]=di here:  "+te[0]);
        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]]);
        }
 Dataset[] foldsTrain = training.folds(numFolds, new Random(1));
//other code
}
...