一旦使用分類器進行了10次交叉驗證,如何打印出每個實例的預測類以及這些實例的分佈情況?如何在WEKA中進行交叉驗證後打印預測的類
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
但http://weka.sourceforge.net/doc/我沒有看到任何crossValidateModel選項,你的描述,你會介意點我到正確的文檔或某處我可以看到這種信息?欣賞!! – Kevin
請參閱http://weka.sourceforge.net/doc.dev/weka/classifiers/Evaluation.html#crossValidateModel。 SO似乎沒有正確解析片段標識符,因此向下滾動到第一個crossValidateModel方法簽名。 – michaeltwofish
請參閱我對該問題的編輯。我嘗試了一些W /你的建議...但它會提示我錯誤,不知道我做錯了什麼。請幫忙!!謝謝!! – Kevin