2010-12-17 50 views
1

我想對實例重新採樣以統一類分佈。爲此,我使用下面的代碼。如何在Java代碼中使用Weka監督重採樣過濾器?

import weka.core.Instances; 

import weka.filters.supervised.instance.*; 

... 

String Fliteroptions="-B 1.0"; 
sampler.setOptions(weka.core.Utils.splitOptions(Fliteroptions)); 
sampler.setRandomSeed((int)System.currentTimeMillis()); 

data = // ... Instances leaded from ARFF file ... 

data = Resample.useFilter(data, sampler); 

但得到以下錯誤:

Zero Weights processed. Default weights will be used 
java.lang.IllegalStateException: No input instance format defined 
at weka.filters.supervised.instance.Resample.input(Resample.java:443) 
at weka.filters.Filter.useFilter(Filter.java:655) 
at WekaClassify.main(WekaClassify.java:84) 

不要任何人有任何線索,這是怎麼回事,我怎麼能得到它的工作?

+2

這將大大有什麼'sampler'是聲明和初始化更加有用。 – 2012-04-24 18:02:45

回答

3

加載數據之後,只需添加以下語句:

sampler.setInputFormat(data); 
3
ArffLoader loader = new ArffLoader(); 
loader.setFile(new File("some.arff")); 
Instances data= loader.getStructure(); 
// you missed this 
sampler.setInputFormat(data);