Метрики прогноза победы белых
Условие
Организаторы шахматного турнира проверяют модель, оценивающую вероятность победы белых в партии. Для каждой партии известна оценка модели от 0 до 100 и результат партии.
Значение 1 означает, что белые победили. Значение 0 означает, что белые не победили: партия могла завершиться ничьёй или победой чёрных. Значение - означает, что официальный результат отсутствует и такую партию нельзя использовать при вычислении метрик.
В конце входа указаны несколько порогов. Для каждого порога t модель считает победу белых предсказанной, если её оценка не меньше t. Требуется для каждого запроса вывести precision, recall и F1 для положительного класса, то есть для победы белых.
Precision равен TP / (TP + FP), recall равен TP / (TP + FN), а F1 = 2 * precision * recall / (precision + recall). Здесь TP — число верно предсказанных побед белых, FP — число ошибочно предсказанных побед белых, FN — число пропущенных побед белых. Строки с результатом - не входят ни в одну из этих величин. Если знаменатель precision или recall равен нулю, соответствующая метрика считается равной 0. Если precision + recall = 0, значение F1 считается равным 0.
Если оценка модели равна порогу, партия считается предсказанной как победа белых.
Формат ввода
В первой строке дано целое число n — количество партий.
В следующих n строках даны два значения: result и score, где result — результат партии (1, 0 или -), а score — оценка модели вероятности победы белых.
В следующей строке дано целое число q — количество запросов.
В следующих q строках дано по одному целому числу t — порогу для модели.
Формат вывода
Для каждого запроса выведите в отдельной строке три числа: precision, recall и F1 для соответствующего порога.
Каждое число выводится ровно с тремя знаками после десятичной точки.
Ограничения
1 <= n <= 2000.
Среди строк с партиями есть хотя бы одна строка, у которой result равен 0 или 1.
result имеет длину 1 и принадлежит множеству 1, 0, -.
0 <= score <= 100.
1 <= q <= 2000.
0 <= t <= 100.
Решить задачу с автопроверкой на Python →
Куда дальше
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели
- С нуля до олимпиады: маршрут — сколько занимает язык, какие приёмы нужны и к какому этапу это ведёт
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами