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

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

Условие

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

Для указанного пункта выдачи рассматриваются первые k его посылок в порядке строк файла. Требуется вычислить две метрики качества прогноза: среднеквадратичную ошибку MSE и среднюю абсолютную ошибку MAE.

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

Пусть для выбранных посылок p_i — прогнозируемое время, а a_i — фактическое время. Тогда

MSE = ((p_1 - a_1)^2 + (p_2 - a_2)^2 + ... + (p_k - a_k)^2) / k,

MAE = (|p_1 - a_1| + |p_2 - a_2| + ... + |p_k - a_k|) / k.

Формат ввода

В каталоге с программой находится файл data.csv в кодировке UTF-8. Разделитель — запятая, первая строка содержит заголовки. В файле записаны столбцы:

В первой строке стандартного ввода задано название пункта выдачи pickup_point.

Во второй строке задано целое число k.

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

Выведите через пробел значения MSE и MAE именно в этом порядке.

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

Ограничения

В файле от 300 до 1000 строк с данными.

Длина parcel_id составляет от 5 до 20 символов. Длина названия пункта выдачи составляет от 4 до 20 символов.

forecast_hours и actual_hours — целые числа от 1 до 120.

Название пункта выдачи во входе встречается в файле. Для него в файле есть не менее k строк.

1 ≤ k ≤ 1000.

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

Куда дальше