Java WEKA API - StratifiedRemoveFolds

我有大约 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 

我究竟做错了什么?


函数式编程
浏览 141回答 1
1回答

繁星淼淼

您需要为加载的实例设置类索引。类索引通常是最后一个索引。您可以将其设置为:Instances data = loader.getDataSet();data.setClassIndex(data.numAttributes() - 1);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java