JavaコードでWekaの監視されたResampleフィルターを使用する方法は?

StackOverflow https://stackoverflow.com/questions/4473058

  •  11-10-2019
  •  | 
  •  

質問

インスタンスを均一なクラス分布に再サンプリングしたいと思います。このために、私は次のコードを使用しています。

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)

ここで何が起こっているのか、誰かが手がかりを持っていますか?どうすればそれを機能させることができますか?

役に立ちましたか?

解決

データを読み込んだ後、次のステートメントを追加するだけです。

sampler.setInputFormat(data);

他のヒント

ArffLoader loader = new ArffLoader();
loader.setFile(new File("some.arff"));
Instances data= loader.getStructure();
// you missed this
sampler.setInputFormat(data);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top