2010-12-17 8 views
1

Ich möchte die Instanzen zu einer einheitlichen Klassenverteilung erneut abtasten. Dafür verwende ich den folgenden Code.Wie verwende ich Weka Supervised Resample Filter in Java Code?

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); 

Aber die folgende Fehlermeldung erhalten:

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) 

Haben jemand eine Ahnung hat, was hier vor sich geht und wie kann ich es Arbeit?

+2

Dies wäre viel nützlicher mit der Deklaration und Initialisierung von dem, was 'sampler' ist. –

Antwort

3

Nach dem Laden der Daten, fügen Sie einfach die folgende Anweisung:

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