Измерьте балансировку взвешенного массива numpyPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Измерьте балансировку взвешенного массива numpy

Сообщение Anonymous »

У меня есть игроки A и B, которые оба играли против разных соперников.



игрок
соперник
дней назад




A
C
1


A
C
2


AD
10


A
F
100


A
F
101


A
F
102


A< /td>
G
1


B
C
1


B
C
2


B
D
10


< td>B
F
100


Б
Ж
101


Б
Ж
102


B
G
1

B
G
2


B
G
3


B
G
4

< tr>
B
G
5


B
G
6


B
G
7


B
G
8


Во-первых, я хочу найти наиболее распространенного противника. Мое определение «наиболее распространенного» — это не общее количество матчей, а скорее сбалансированное количество матчей.
Если, например, игроки A и B сыграли соответственно 99 и 1 раз( s) против C Я предпочитаю соперника D, где A и B играли оба 49 раз.
Чтобы измерить "сбалансированность" пишу следующую функцию:

Код: Выделить всё

import numpy as np
from collections import Counter

def balanceness(array: np.ndarray):
classes = [(c, cnt) for c, cnt in Counter(array).items()]
m = len(classes)
n = len(array)

H = -sum([(cnt / n) * np.log((cnt / n)) for c, cnt in classes])

return H / np.log(m)
Эта функция работает должным образом:

Код: Выделить всё

>> balanceness(array=np.array([0, 0, 0, 1, 1, 1]))
1.0
Если я запущу эту функцию на разных оппонентах, я увижу следующие результаты:



противник
баланс
n_matches




C
1
4


D1
2


F
1
6


G
0.5032583347756457
9


< /div>
Очевидно, что оппонент F является наиболее распространенным. Однако совпадения A и B с F относительно старые.
Как мне включить фактор новизны в свои вычисления, чтобы найти "самый последний общий оппонент"?

Подробнее здесь: https://stackoverflow.com/questions/788 ... umpy-array
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»