私は、サッカーの試合の結果を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 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.予測
public void train(int epoch){
int i =0;
final Train train =new ResilientPropagation(network,trainingSet);
while(i<=epoch){
train.iteration();
i++;
}
}
)私は物事が良くなったので、現在より/以下でテストニューラルネットワーク1000にデータを供給しています。
2,3。)16個の入力パラメータがあります。ホームチームのポイント、ホームチームのホームの勝利、ドロー、ロス、ホームチームの合計ウォン、ロスト、ドロー、フォーム(過去5試合のポイント獲得)で構成されます。同じデータはホームチームの勝利、引き分け、損失の代わりに離れたチームのためだけに行く 離れたチーム離れた勝利、引き分け、損失が使用されます。私は別のトレーニングデータを試してみます。
ありがとうございました。隠されたノードの数については、80%予測の最小値が1または0の前にはるかに現実的な予測が得られたので、多くの助けになりました。最初の投稿を回答で更新します。チェックアウトしてコメントを追加してください! – user1533166
私はEncogを使用して同じ問題を抱えています。これに関する更新はありますか? –
「ネットワークを収束させるためにトレーニングデータに複数のパスを入力する必要があります」と言いますと、どういう意味ですか?私のデータを訓練するとき、私は 'do {train.Iteration()} while(train.Error> 0.001);でそれを通します。これで足りないの?注:私のデータは収束しておらず、エラー率は92%です。データは約200行しかありません。 – user1477388