我正在製作一個程序,使用encog預測足球比賽的結果。我創建了一個神經網絡,用彈性傳播訓練方法訓練了90個數據。主場比賽我的比賽成績爲1,平局爲0,客場勝利爲-1。足球預測程序encog:不一致的預測
問題在於預測。有時我獲得50%的成功率,其他時間我得到33%的低。這就像使用隨機函數。我注意到,幾乎最常見的預測結果是1(約70%)。我試圖改變隱藏層的數量,訓練的次數,但沒有運氣,它仍然是擺動的。任何人都可以幫助我,或者讓我進入正確的方向,如果我做錯了什麼。
這裏是神經網絡的代碼。我正在從數據庫中獲取訓練數據和預測數據。
Predictor(NeuralDataSet trainingData){
trainingSet = trainingData;
network = new BasicNetwork();
network.addLayer(new BasicLayer(16));
network.addLayer(new BasicLayer(3));
network.addLayer(new BasicLayer(1));
network.getStructure().finalizeStructure();
network.reset();
}
培訓
public void train(int epoch){
int i =0;
final Train train =new ResilientPropagation(network,trainingSet);
while(i<=epoch){
train.iteration();
i++;
}
}
預測
public void successRate(NeuralDataSet trainingData){
int counter = 0;
int correct = 0;
int home=0;
int away=0;
int draw=0;
for(MLDataPair pair: trainingData) {
final MLData output = network.compute(pair.getInput());
if(pair.getIdeal().getData(0)==Math.round(output.getData(0)))
correct++;
counter++;
}
System.out.println((double)correct/(double)counter);
}
1)我喂的數據神經網絡1000目前有更多/更少,因爲事情變得更好的測試。
2,3)我有16個輸入參數。他們包括:主隊得分,主隊主場贏球,平局,失球,主隊總勝數,輸球,平局和形式(最近5場比賽獲得積分)。同樣的數據僅供客場客隊客場取勝,主隊客場主勝,平局客場客場客場客場贏球,平局,失利。我會嘗試不同的訓練數據。
謝謝你的回答。關於隱藏節點數量的部分幫助很大,因爲我現在得到的預測遠比80%預測的最小值爲1或0時更現實。我將用答案更新第一篇文章,請查看並發表評論! – user1533166 2012-08-16 15:01:23
我使用Encog遇到同樣的問題。對此有何更新? – 2012-10-16 19:49:56
當你說「你需要多次通過培訓數據才能使網絡匯合」時,你是什麼意思?當我訓練我的數據時,我通過'do {train.Iteration()}傳遞它(train.Error> 0.001);'。這是不夠的?注意:我的數據沒有收斂,錯誤率爲92%,而我只有大約200行數據。 – user1477388 2014-02-12 16:16:27