分類器を使用して10分割交差検定を実行したら、すべてのインスタンスの述語クラスとこれらのインスタンスの分布を出力するにはどうすればよいですか?
J48 j48 = new J48();
Evaluation eval = new Evaluation(newData);
eval.crossValidateModel(j48, newData, 10, new Random(1));
以下のようなことを試してみると、分類器が構築されていないとのことでした。
for (int i=0; i<data.numInstances(); i++){
System.out.println(j48.distributionForInstance(newData.instance(i)));
}
私がやろうとしているのは、WEKA GUIと同じ機能で、分類器がトレーニングされたら、をクリックするVisualize classifier error" > Save
と、ファイル内に予測されたクラスが見つかります。しかし今、私は自分のJavaコードで動作するためにそれを必要としています。
私は以下のようなものを試しました:
J48 j48 = new J48();
Evaluation eval = new Evaluation(newData);
StringBuffer forPredictionsPrinting = new StringBuffer();
weka.core.Range attsToOutput = null;
Boolean outputDistribution = new Boolean(true);
eval.crossValidateModel(j48, newData, 10, new Random(1), forPredictionsPrinting, attsToOutput, outputDistribution);
それでも、それは私にエラーを促します:
Exception in thread "main" java.lang.ClassCastException: java.lang.StringBuffer cannot be cast to weka.classifiers.evaluation.output.prediction.AbstractOutput