gpt4 book ai didi

java - 足球预测程序encog : Inconsistent predictions

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:22:45 27 4
gpt4 key购买 nike

我正在制作一个使用 encog 预测足球比赛结果的程序。我创建了一个神经网络,使用弹性传播训练方法使用 90 场比赛的数据对其进行训练。我将比赛结果标记为 1 表示主场获胜,0 表示平局,-1 表示客场获胜。

问题出在预测上。有时我的成功率为 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场比赛的积分增益)。相同的数据仅适用于客队,而不适用于主队主场胜、平、负客场球队客场胜,平,负使用。我将尝试使用不同的训练数据。

最佳答案

根据信息很难说错在哪里,可能有多种原因。但这里有一些潜在的解决方案。

1) 您将训练数据输入神经网络多少次?通常您需要多次传递训练数据以使网络收敛。一次是不够的,尤其是当你只有 90 个训练数据时。

2) 训练数据中有多少个输入参数(它们是什么)?通常您需要将隐藏层节点的数量调整为输入参数的数量。对此没有硬性规定,但我通常从至少两倍数量的隐藏层节点作为输入参数开始。

3)您是否尝试过选择不同的测试数据?我假设您的培训和测试数据不同。您选择的测试数据可能有问题,因为它们与训练数据根本不匹配。也完全有可能无法从您的方法中获得任何可靠的估计。您的输入参数可能完全不足以预测谁赢得任何给定比赛。这是垃圾进,垃圾出,概念。

关于java - 足球预测程序encog : Inconsistent predictions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11979073/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com