2010-12-17 5 views
1

Je souhaite rééchantillonner les instances pour une distribution de classe uniforme. Pour cela, j'utilise le code suivant.Comment utiliser Weka Supervised Resample Filter dans le code Java?

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

Mais obtenir l'erreur suivante:

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) 

Ne quelqu'un a la moindre idée ce qui se passe ici et comment puis-je le faire fonctionner?

+2

Ce serait beaucoup plus utile à la déclaration et l'initialisation de ce 'sampler' est. –

Répondre

3

Après le chargement des données, il suffit d'ajouter la déclaration suivante:

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