Java WEKA API - StraifiedRemoveFolds - PullRequest
       16

Java WEKA API - StraifiedRemoveFolds

0 голосов
/ 03 февраля 2019

У меня ~ 100 наборов данных в формате csv, и я хотел бы применить Weka-фильтр StratifiedRemoveFolds.
Пока мой код:

CSVLoader loader = new CSVLoader();
loader.setSource(new File(datasetToBeProcessed.toString()));
Instances data = loader.getDataSet();

StratifiedRemoveFolds strRmvFolds = new StratifiedRemoveFolds();
strRmvFolds.setFold(fold);
strRmvFolds.setNumFolds(DatasetPreprocessing.numberOfFolds);
strRmvFolds.setSeed(0);
strRmvFolds.setInvertSelection(false);
strRmvFolds.setInputFormat(data);
data = StratifiedRemoveFolds.useFilter(data, strRmvFolds);

При запуске я получаю следующее сообщение об ошибке:

stratifyDatasetsWithWekaApi 
SEVERE: null
weka.core.UnassignedClassException: 
weka filters.supervised.instance.StratifiedRemoveFolds: 
Class attribute not set!

Я также попробовал следующее:

CSVLoader loader = new CSVLoader();
loader.setSource(new File(datasetToBeProcessed.toString()));
Instances data = loader.getDataSet();

String[] options = new String[4]; // initialize options
options[0] = "-S 0"; // seed number
options[1] = "-V"; // invert selection
options[2] = "-N 8"; // total number of folds
options[3] = "-F 1";  // current fold

strRmvFolds.setOptions(options);
strRmvFolds.setInputFormat(data);
data = StratifiedRemoveFolds.useFilter(data, strRmvFolds);

Сообщение об ошибке:

stratifyDatasetsWithWekaApi
SEVERE: null
java.lang.Exception: Illegal options: -S 0 -N 8 -F 1 

Что я делаю не так?

Спасибо, Павлос

http://weka.sourceforge.net/doc.dev/weka/filters/supervised/instance/StratifiedRemoveFolds.html

1 Ответ

0 голосов
/ 05 февраля 2019

Вам нужно установить индекс класса для загруженных экземпляров.Индекс класса обычно является последним индексом.Вы можете установить его как:

Instances data = loader.getDataSet();
data.setClassIndex(data.numAttributes() - 1);
...