Метрики порога для заказов доставки

тема: Метрики классификации · уровень: средний

Условие

Служба доставки еды использует оценку риска опоздания заказа. Чем больше оценка, тем вероятнее, что заказ будет доставлен позже обещанного времени. Оператор помечает заказ как требующий внимания, если его оценка не меньше заданного порога.

В журнале для каждого заказа записаны оценка риска и настоящий результат доставки. Значение 1 означает, что заказ опоздал, значение 0 означает, что заказ был доставлен вовремя. Иногда оценка риска отсутствует и обозначается символом -. Заказ без оценки считается не помеченным, то есть предсказанием 0.

Требуется вычислить чувствительность и специфичность для порога из запроса. Чувствительность равна TP / (TP + FN), где TP — число опоздавших заказов, помеченных оператором, а FN — число опоздавших заказов, не помеченных оператором. Специфичность равна TN / (TN + FP), где TN — число вовремя доставленных заказов, не помеченных оператором, а FP — число вовремя доставленных заказов, помеченных оператором. Если знаменатель метрики равен нулю, значение этой метрики считается равным 0.00.

При равенстве оценки риска и порога заказ считается помеченным. Каждую метрику следует округлить до ближайшего значения с двумя знаками после точки, а при точной середине округлять вверх.

Формат ввода

В первой строке дано целое число n — количество записей в журнале.

В следующих n строках даны три значения: идентификатор заказа order_id, оценка риска risk_score и результат доставки late.

risk_score — целое число или символ -. Значение late равно 0 или 1.

В последней строке дано целое число threshold — порог из запроса.

Формат вывода

Выведите два числа через пробел: чувствительность, затем специфичность для порога из запроса. Каждое число должно содержать ровно два знака после точки.

Ограничения

1 <= n <= 2000.

Длина идентификатора order_id составляет от 1 до 12 символов. Идентификатор состоит из латинских букв, цифр и символа _.

Если оценка риска указана числом, то 0 <= risk_score <= 1000.

late равно 0 или 1.

0 <= threshold <= 1000.

Решить задачу с автопроверкой на Python →

Куда дальше