Ошибки прогноза выдач книг

тема: Метрики регрессии и МНК · уровень: базовый

Условие

Библиотека хранит журнал прогнозов числа выдач книг по филиалам. Для каждой записи известны фактическое число выдач и прогноз, сделанный заранее.

В некоторых строках прогноз отсутствует и обозначается словом NA. Такие строки не используются при вычислении ошибок, так как сравнить прогноз с фактом в них невозможно.

В последней строке входа указан код филиала-запроса. Требуется вычислить качество прогнозов только для этого филиала. Средняя квадратичная ошибка называется MSE и вычисляется по формуле MSE = (e1² + e2² + ... + ek²) / k, а средняя абсолютная ошибка называется MAE и вычисляется по формуле MAE = (|e1| + |e2| + ... + |ek|) / k, где ei = прогноз_i - факт_i, а k — число строк филиала с указанным прогнозом.

Если фактическое число выдач совпадает с прогнозом, ошибка этой строки равна нулю и строка учитывается в обеих метриках.

Формат ввода

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

В следующих n строках даны три значения: код филиала, фактическое число выдач и прогноз. Прогноз является целым числом либо словом NA.

В последней строке дан код филиала-запроса.

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

Выведите два числа через пробел: сначала MSE, затем MAE для филиала-запроса.

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

Ограничения

1 ≤ n ≤ 1000.

Код филиала содержит от 1 до 20 символов: строчные латинские буквы и цифры, первый символ — буква.

0 ≤ фактическое число выдач ≤ 100000.

Если прогноз не равен NA, то 0 ≤ прогноз ≤ 100000.

Код филиала-запроса встречается хотя бы в одной строке с числовым прогнозом.

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

Куда дальше