Java Foosball结果预测
在我们的办公室,我们经常在下班后玩几轮足球/桌上足球。我编写了一个小java程序,从可用的球员中生成随机的2vs2阵容,然后将比赛结果存储在数据库中 目前对结果的预测使用了4名参赛选手之前所有比赛结果的简单平均值。这给出了一个非常粗略的估计,但我想用更复杂的东西来代替它,考虑到以下因素:Java Foosball结果预测,java,mysql,prediction,Java,Mysql,Prediction,在我们的办公室,我们经常在下班后玩几轮足球/桌上足球。我编写了一个小java程序,从可用的球员中生成随机的2vs2阵容,然后将比赛结果存储在数据库中 目前对结果的预测使用了4名参赛选手之前所有比赛结果的简单平均值。这给出了一个非常粗略的估计,但我想用更复杂的东西来代替它,考虑到以下因素: 球员作为进攻球员可能打得好,但作为防守球员可能打得不好(反之亦然) 球员在对抗特定对手时表现出色/对抗其他对手时表现不佳 有些团队合作得很好,其他团队则不然 技能随时间而变化 尽可能准确地预测比赛结果的最佳
- 球员作为进攻球员可能打得好,但作为防守球员可能打得不好(反之亦然)
- 球员在对抗特定对手时表现出色/对抗其他对手时表现不佳
- 有些团队合作得很好,其他团队则不然
- 技能随时间而变化
由于一些项目的最后期限,不得不从这件事上休息更长的时间。为了使问题更加具体: 给定以下mysql表,其中包含迄今为止进行的所有比赛:
table match_result
match_id int pk
match_start datetime
duration int (match length in seconds)
blue_defense int fk to table player
blue_attack int fk to table player
red_defense int fk to table player
red_attack int fk to table player
score_blue int
score_red int
如何编写函数predictResult(blueDef、blueAtk、redDef、redAtk){…}为了尽可能精确地估计结果,执行任何sql、进行计算或使用外部库?为什么要使用neuralnet?使用统计数据,可能每个玩家之间的相关性是一个很好的衡量标准。首先,让我们收集一些信息: 对于给定的玩家,我们需要:
真正的信息将来自一个好的攻击者与一个好的防守者的较量。尝试应用朴素贝叶斯分类器 贝叶斯学习是一种概率学习 基于 假设 利息由概率决定 分布及其优化 决策可以通过推理做出 把这些概率加在一起 利用观测数据。[Mitchell,T。 (1997),机器学习] 相同的球员分布可能会导致不同的比赛结果。如果数据中有一个模式,一个基于变量的模式,朴素贝叶斯分类器可能会产生很好的结果 算法不是很复杂。我认为,一个具备一定概率知识的人,能够理解并应用它 在入侵检测系统中,它通过查看各种网络参数来确定网络异常。贝叶斯方法可能在特定类型的数据中非常成功,并产生高TP和低FP率。但这也可能导致高FP率,这取决于你的数据。您的数据将决定最佳方法 您可以使用数据挖掘软件库Weka(),并尝试不同的算法。它包含朴素贝叶斯分类器。
试试看。一个选择是试着猜测点扩散为。如果你的游戏比玩家多,你可以通过构建所有游戏的游戏矩阵(一队中的玩家+1,另一队中的玩家+1,观众0)和排列的结果向量,对每个玩家的分数进行最小二乘拟合。使用TrueSkill算法,这一点非常好。我已经为foosball和chess实现了它,它运行得非常好。同事们告诉我,它在这方面做得太好了
有关其工作原理的完整详细信息以及到我的实现的链接,请参阅我的“”博客文章。。有些人认为神经网络适用于一切事物;请参阅每日WTF::-)