Я нашел следующий код, который распространяет примеры как 75% обучения и 25% тестовых данных:
java weka.filters.supervised.instance.StratifiedRemoveFolds -i full.arff -o train.arff -c last -N 4 -F 1 -V
java weka.filters.supervised.instance.StratifiedRemoveFolds -i full.arff -o test.arff -c last -N 4 -F 1
Но мне нужно разбить данные таким образом, чтобы 70% использовались для обучения, а 30% - для тестирования.
Как мне это сделать?
Я не хочу, чтобы раскол был рандомизирован.
Основываясь на их JavaDoc, одна возможность, хотя и немного неуклюжая, - это использовать 10
сгибов, а затем объединить 3 части для тестирования и объединить 7 штук вместе для обучения.
java weka.filters.supervised.instance.StratifiedRemoveFolds -i full.arff -o piece1.arff -N 10 -F 1
java weka.filters.supervised.instance.StratifiedRemoveFolds -i full.arff -o piece2.arff -N 10 -F 2
...
java weka.filters.supervised.instance.StratifiedRemoveFolds -i full.arff -o piece10.arff -N 10 -F 10
Слияние для сборки тестового набора:
java weka.core.Instances append piece1.arff piece2.arff > temp.arff
java weka.core.Instances append temp.arff piece3.arff > test.arff
Документация для слияния находится здесь.
Конечно, вы могли бы выполнить описанные выше шаги в цикле for
в командной строке, но я не уверен, на какой платформе вы находитесь.