Метрики предупреждений о заморозках
Условие
Погодная станция передаёт прогнозы модели о ночных заморозках. Для каждого измерения модель выставляет предупреждение: 1, если ожидается заморозок, и 0 в противном случае.
Позже поступает отдельная таблица с проверенными данными. В ней указано, был ли заморозок фактически. Значение - означает, что проверка для измерения недоступна. Такие строки полностью исключаются из расчёта метрик.
Строки двух таблиц требуется сопоставить по идентификатору измерения. Для положительного класса, то есть для заморозка, необходимо вычислить precision, recall и F1.
Обозначим через TP число строк, где прогноз и факт равны 1, через FP число строк, где прогноз равен 1, а факт равен 0, через FN число строк, где прогноз равен 0, а факт равен 1. Тогда precision = TP / (TP + FP), recall = TP / (TP + FN), F1 = 2 * precision * recall / (precision + recall). По ограничениям все знаменатели в этих формулах положительны.
Каждое число нужно округлить до трёх знаков после десятичной точки по обычному правилу: при ровно половине тысячной округление выполняется в большую сторону. При совпадении прогнозного и подтверждённого значения строка учитывается в соответствующей ячейке TP или TN, специальный выбор не требуется.
Формат ввода
В первой строке дано целое число n — количество строк в каждой таблице.
В следующих n строках дана таблица прогнозов. Каждая строка содержит идентификатор измерения id и прогноз модели prediction.
В следующих n строках дана таблица проверок. Каждая строка содержит идентификатор измерения id и подтверждённое значение actual.
Идентификаторы в каждой таблице не повторяются, а множества идентификаторов в двух таблицах совпадают.
Формат вывода
Выведите в одной строке три числа через пробел: precision, recall и F1 в указанном порядке. Каждое число должно иметь ровно три знака после десятичной точки.
Ограничения
1 ≤ n ≤ 2000.
Идентификатор id состоит из латинских заглавных букв и цифр, его длина составляет от 1 до 12 символов.
prediction равен 0 или 1.
actual равен 0, 1 или -.
Среди строк с actual, не равным -, есть хотя бы одна строка с прогнозом 1 и хотя бы одна строка с фактом 1.
Решить задачу с автопроверкой на Python →
Куда дальше
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели
- На программиста по олимпиаде: путь по классам — что даёт диплом, куда с ним берут на ИТ-направления и почему решает 9 класс
- С нуля до олимпиады: маршрут — сколько занимает язык, какие приёмы нужны и к какому этапу это ведёт