用于比赛评分的python模块(类似于elo评分)

elote的Python项目详细描述


埃洛特
==

[![覆盖状态](https://coveralls.io/repos/wdm0006/elote/badge.svg?branch=master&service=github)(https://coveralls.io/github/wdm0006/elote?分支=主)![特拉维斯状态](https://travis-ci.org/wdm0006/elote.svg?branch=master)

这方面的经典例子是基于不同棋手之间重复的对头比赛对棋手进行评分。在elote中实现的第一个评级系统,即elo评级
系统,就是为这个目的而设计的[3]。另一个众所周知的用例是大学足球排名。

修正后的评分系统是:

*elo[3]
*glicko-1[1]
*ecf[4]
*dwz[5]


usage
==


examples目录中有很多示例,如果您想深入一点,但是
elote使用起来非常简单。我们关心的两个对象是竞争对手和竞技场。竞争对手是你评价的对象,竞技场是安排他们之间比赛的机制。首先,竞争对手:

od)*100,)
print('打得好的概率:%5.2f%'%(好的。预期的_分数(好的)*100,))

这将创建两个竞争对手,初始评分不同。现在我们可以看到他们之间的匹配可能会怎样:


t(较好)




较好。输给(良好)


然后,我们可以重新运行预测,并查看更新的概率:


较好击败良好的概率:61.25%
良好击败较好的概率:38.75%

使用默认设置不会有太大变化。

arenas
----

arenas是调度大量比赛或匹配的有用抽象。lambdarena对象
接受带有两个参数的lambda函数,如果第一个参数获胜,则返回布尔值(对于ties,则不返回布尔值)。在不手动设置任何竞争对手的情况下,只要参数是散列的,arena对象将创建
所有竞争对手,运行比赛并对其进行排名。

下面是一个玩具示例,它使用一个lambda函数来比较两个整数。有了这个,我们实现了
性能最差、最复杂的排序算法,但它仍然有效:


from elote import lambdarena
import json
import random


(a,b):
返回a>;b

matchups=[(random.randint(1,10),random.randint(1,10))用于范围(1000)]


arena=lambdarena(func)
arena.matchups(matchups)

print(json.dumps(arena.leaderboard(),indent=4))

好的,比如:

[
{
"评级":560.0,
"竞争对手":1
},
{
"评级":803.3256886926524,
"竞争对手":2
},
{
"评级":994.1660057704563,
"竞争对手":3
},
{
"评级":1096.0912814220258,
"竞争对手":4
},
{
"评级":1221.000354671287,
"竞争对手":5
},
{
"评级":1351.4243548137367,
"竞争对手":6
},
{
"评级":1401.770230395329,
"竞争对手":7
},
"评级":1558.9349074885894,
""竞争者":8
},
{
"评级":1607.6971796462033,
"竞争者":9
},
{
"评级":1708.3786662956998,
"竞争者":10
}
]




使用生成的数据来显示elote,
的不同特性的基本示例,以及一些使用真实数据的用例,迄今为止这些都来自masseyratings.com,但已转换为json[2]。


installation
===


很快将在pypi上实现,但现在您可以从git派生repo或安装。

仅支持python 3。4+

贡献
==


打开
问题或PR,我们可以协调工作。

references
==


[1]-http://www.glicko.net/glicko/glicko.pdf
[2]-masseyratings.com
[3]-elo,arpad(1978)。棋手的等级,过去和现在。阿科。ISBN 0-668-04721-6.
[4]-http://www.ecfgrading.org.uk/new/help.php elo
[5]-https://en.wikipedia.org/wiki/deutsche\u wertungszahl

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
通过signingReport运行安卓应用程序时发生java错误   java我需要实现hashCode()和equals()方法吗?   javascript Selenium Java从Pinterest下载图像   java Tomcat(嵌入式),无需重新启动即可进行更改   java检查每个if是否有匹配的endif   的java接口。我也是。罐子   mysql java。sql。SQLException:列索引超出范围,0<1。使用准备好的语句   如何在java中修改json字符串?   javascript智能手机的独特功能   web服务java。lang.NoSuchMethodError:javax。ws。rs.core。响应$Status$Family   sockets通过浏览器/URL与ServerSocket建立Java连接   JavaSpring数据自定义存储库和接口隔离原则   swing从不同的java类访问jdialog的一个实例   java如何根据发出的事件有条件地缓冲分组的可观察/流量?   用java将电子邮件正文导出为html文件   JavaSpring获取ServletContext并将其作为Bean提供   setter不做java中应该做的事情