EbTech / Elo-MMR

Skill estimation systems for multiplayer competitions
https://arxiv.org/abs/2101.00400
MIT License
173 stars 21 forks source link

Python implementation and usage #28

Open kb-open opened 5 months ago

kb-open commented 5 months ago

Thanks for the implementation. But how do we use this library in Python?

EbTech commented 5 months ago

This library would probably have to be packaged with https://github.com/PyO3/pyo3

It would be great if someone wants to help.

kb-open commented 5 months ago

I have a few questions:

EbTech commented 5 months ago

Ties are tricky to model consistently across different games, and I think I recall them being somewhat messy in TrueSkill as well. You could try to do similar math for Elo-MMR; I'm not sure how it would turn out. We obtained simpler formulas by taking the limit as the likelihood of ties goes to zero, but in doing so we gave up on predicting ties.

Making Python wrappers for the Rust implementation would be different from making a pure Python implementation, so your second point depends on which you prefer.

BeniaminC commented 3 months ago

I open sourced the Python implementation. It is particularly slow, but I plan to release the CuPy, Numba, and standard Numpy implementation soon(tm). You can take a look and make adjustments for yourself. It is preparing for Python 3.13, which will release the GIL for threads. It has both individual updates (standard) and team updates which utilizes an aggregation method (sum of ratings by default). https://github.com/BeniaminC/Open-ELO/blob/main/src/openelo/systems/elommr.py