- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在制作一个使用 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/
我是 Encog 的新手,当我阅读用 Java 中的 Encog 2 编程神经网络时,我在 Encog 3 中找不到诸如 ContextLayer 之类的类,而且 encog 3 似乎相当重要与 en
我在其中一个项目中使用 Encog,但在解码 One-Of 类时遇到了困难。该字段的规范化操作之一是 NormalizationAction.OneOf,它具有三个输出。当我评估时,我想解码预测值。如
是否可以将经过训练的网络保存到文件中,然后再次使用它(加载文件)?可以举个简单的例子吗?目前我每次训练都应该运行: EncogUtility.trainConsole(网络、trainingSet、T
我正在使用 Encog 框架和 Java 来做一个图像识别系统。然而,当我将下采样宽度和高度设置为高于 100 时,我得到了 java.lang.NegativeArraySizeException
我正在使用(encog 3.3.0 库)构建用于图像识别的神经网络。我已将图像转换为 50x50 灰度,以避免神经网络混淆,因为我基本上想从图像中提取一些与颜色无关的特征。我有两个输出类。 我的输入:
我有一个非常小的数据集,只有 200 行。我只有 3 列;前两个是数字(负数和正数),最后一个是字母。 我正在尝试根据前两列数字对最后一列进行分类。 我的逗号分隔数据看起来与此类似(规范化之前): H
Encog具有多线程支持。但据我所知,在一个处理器上并行处理例如 8 个内核是很好的。如果我买 motherboard,它会工作得更快吗?有 4 个 socket ,并安装四个 Intel Xeon
我看到的 NeuralDataSet 对象除了 XOR 之外什么都不是,它只是两个小数据数组......我无法从文档中找出任何东西在 MLDataSet 上。 似乎所有内容都必须一次加载。但是,我想循
一旦我看到从验证集计算出的误差开始增加,我就想停止训练网络。我正在使用带有 RPROP 的 BasicNetwork 作为训练算法,并且我有以下训练迭代: void trainCrossValidat
我是机器学习和 Encog 的新手,但我希望 Encog 至少能从示例中给出一致的结果,以帮助我更轻松地了解 Encog。对我来说,Encoge 每次运行时都会给出不同的方向结果。 谁能帮助我更好地理
我已经使用 encog 库实现了一个神经网络,如下所示, MLDataSet trainingSet = new BasicMLDataSet(XOR_INPUT, XOR_IDEAL); f
我看到的 Encog 框架示例描述了如何将数字数据分类为文本数据。例如,以下是用于经典 Iris 数据集的数据: "sepal_l","sepal_w","petal_l","petal_w","sp
我是神经网络领域的新手(说实话我几天前才刚开始)。我想在我的 OCR 应用程序中使用神经网络来识别手写文本。 我想知道的是,是否可以在初始训练后训练网络。换句话说,我一开始要训练几个字符,但我想稍后向
机器学习 - 太棒了! 我有一个小项目,我想用它来识别未标记数据中的异常情况。因此,无监督聚类。 但是,数据的顺序也很重要,因为单个记录可能不令人感兴趣,但它之前的记录顺序可能会使其异常。 所以我正在
我需要对来自摄像机的图像进行分类,要考虑的主要功能是: 物体形状(基本形状,如三角形、正方形等) 对象颜色 几乎没有变形 我已经在使用 opencv 进行形状识别,遵循此 Real Time Trac
我正在寻找有关如何使用 Encog Framework 创建简单的垃圾邮件过滤/分类或集群应用程序的示例。我在谷歌上找不到任何东西。 我还购买了 Jeff Heaton 的书《Programming
我正在尝试训练 SVM 来对两个螺旋数据进行分类。 我的输入是一个 3 列的 CSV 文件,前两列是螺旋(未归一化)上一个点的 (x, y) 坐标,第三列是该点所属的螺旋(类) . 我首先规范化 CS
我正在使用 jeff heaton 的这个分类示例: https://github.com/encog/encog-java-examples/blob/master/src/main/java/or
我认为我对 Encog 做错了什么。在我见过的所有示例中,他们只是进行训练,直到达到一定的训练误差,然后打印结果。何时计算梯度并更新隐藏层的权重?这一切都包含在training.iteration()
我正在使用 encog 完成一些大学作业,我想导出网络中所有连接及其相关权重的列表。 我看到了 dumpWeights() 函数,它是 BasicMLNetwork 类的一部分(我使用 Java),但
我是一名优秀的程序员,十分优秀!