0

我已經能夠對網絡進行訓練,並得到它的培訓降到最小錯誤我想...Encog神經網絡 - 如何實際運行測試數據

我實際上沒有看到任何地方,甚至當我瀏覽指導手冊時,如何測試經過訓練的網絡上的新數據......我將部分訓練數據分開,以便我可以在未經訓練的數據上測試網絡的結果,因爲我將它用於分類。這是我得到的代碼,不確定如何處理MLData輸出。對於分類,我只想將輸出神經元的值設爲最高...又名,最有可能是正確的分類節點。

MLDataSet testingSet = new BasicMLDataSet(testingTraining, testingIdeal); 
    System.out.println("Test Results:"); 
    for(MLDataPair pair: testingSet) { 
     final MLData output = network.compute(pair.getInput()); 
     //what do I do with this output? 
    } 

(我的測試數據明顯標註了正確的分類......)

回答

2

那麼它取決於你手頭有什麼問題,但這個想法是,你的輸出應儘可能接近到測試數據集輸出,所以我建議比較一下。例如,如果這是一個分類任務,那麼您的輸出將是可迭代的,您應該能夠計算出所選輸出類是什麼,並將其與目標進行比較。你可以制定錯誤分類率,或者任何其他準確度(精確度,召回率,F1分數)。因此,像:

int bad = 0; 
for(MLDataPair pair: testingSet) 
{ 
    MLData output = network.compute(pair.getInput()); 
    if(outputClass(output) != outputClass(pair.getIdeal())) 
     bad++; 
} 
double misclassificationRate = bad/testingSet.size() 

你將不得不適當地寫OutputClass類,以便它返回過程的分類輸出。 對於迴歸,您可以做類似的事情,但是您可以使用兩種輸出之間的距離度量來代替映射,以找出錯誤。