2016-09-06 61 views
0

我使用WEKA Explorer來運行10倍交叉驗證。我輸出預測到一個CSV文件。由於10fold方法混合了數據的順序,我不知道哪些具體數據是正確或不正確的分類。 我的意思是,通過查看CSV我不知道哪個具體的 1或0被分類爲1或0.有沒有什麼方法可以查看每個摺疊測試集中每個特定實例的分類結果是什麼?例如,如果CSV會記錄被分類的實例的ID,那就太好了。WEKA在10倍CSV輸出中的預測輸入

一種替代方案可能是我手動實現10fold方法;即我可以創建10個ARFF文件,然後在每個文件上運行一個90/10的百分比(並保持順序)。這個解決方案看起來相當詳細,費力並且容易出錯。

感謝您的幫助!

+0

這是不太清楚什麼是你問你有一個模型,你需要進行分類情況如果是這樣,爲什麼用10倍CV或者你需要檢查你的模型的準確率,召回等? – xro7

+0

或者您是否需要查看每次摺疊測試集中每個實例的分類結果? – xro7

+0

謝謝,我編輯了任務離子。 –

回答

0

要做到這一點,你需要做的每一個折以下:

int result = new int[testSet.numInstances()]; 
for (int j = 0; j < testSet.numInstances(); j++) { 

    double res[j] = classifier.classifyInstance(testSet.get(j)); 

} 

現在res陣列具有用於測試集合中的每個實例的分類結果。您可以根據需要使用這些信息。 例如,您可以打印每個實例的屬性(例如,如果屬性是字符串,你可以使用(addingFilter之前)testSet.get(j).stringValue(PositionOfAttributeYouWantToPrint))其次是分類結果打印出來。

注意,如果分類結果是名義值,你可以打印使用這樣的:??

testSet.classAttribute().value((int)res[j]))  
+0

HI xro7,感謝您的幫助。我從來沒有在JAVA中使用WEKA,我只能通過GUI使用WEKA。假設我將一個名爲X.arff和RandomForest的文件用作輸入文件作爲分類方法,您可以發佈一個更完整的JAVA代碼嗎?順便說一句,我想打印實例的原始ID(又名順序)。 –

+0

我沒有相信你通過GUI工作。那麼這不像它的聲音那麼簡單。因爲我不知道你的arff文件包含了什麼。從這裏開始步驟很簡單,自己動手吧http://weka.wikispaces.com/Use+WEKA+in+your+Java+code – xro7