有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在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) 个答案

  1. # 1 楼答案

    加载数据后,只需添加以下语句:

    sampler.setInputFormat(data);
    
  2. # 2 楼答案

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