Загрузка
Загружаем соревнования
Файл submission.csv с двумя столбцами:
user_id — идентификатор ученика из reactions.csv;cluster — номер группы, целое число.В файле должно быть ровно 1000 строк: каждый user_id — ровно один раз. Порядок строк неважен. Какими числами
названы группы, тоже неважно: 0, 1, 2, 3 и 7, 3, 5, -1 с тем же разбиением дают одинаковый результат.
Метка -1 (шум у DBSCAN) считается обычной группой.
user_id,cluster
u_0000,2
u_0001,0Не более 40 посылок в сутки. Срок сдачи — 15 ноября, 23:59 по Москве.
Нажмите «Отправить решение» на странице соревнования и загрузите submission.csv. Если решаете в рабочей среде
платформы, можно отправить и оттуда: в правой панели вкладка Submit («Отправка») → «Файл» → «Отправить файл».
Метрика — Adjusted Rand Index (ARI): насколько ваше разбиение совпадает с настоящими клубами. Для каждой пары учеников проверяется, согласны ли разбиения: оба кладут пару в одну группу или оба — в разные. Затем результат поправляется на случайность: 1 — полное совпадение, около 0 — не лучше случайного разбиения, бывает и меньше 0.
Ученики разбиты на публичную и приватную части: 298 и 702 человека. Отправляете вы разбиение всех 1000, но после посылки видите ARI только на публичной части. Итоговый результат считается на приватной части: берётся лучшая из двух финальных посылок. Их можно отметить во вкладке «Отправки»; если не отметить, платформа сама возьмёт две лучшие по публичной части.
За задачу можно получить до 100 баллов. ARI переводится в баллы линейно:
На приватной части , ; на публичной — ,
from sklearn.metrics import adjusted_rand_score
clubs = [0, 0, 1, 1, 2, 2]
print(adjusted_rand_score(clubs, [5, 5, 3, 3, 9, 9])) # 1.0: то же разбиение, другие номера
print(adjusted_rand_score(clubs, [0, 0, 1, 1, 1, 2])) # 0.444...