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

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

Условие

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

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

Если для игрока осталось m учитываемых строк, а в них фактические значения равны y_i, прогнозы равны p_i, то вычисляется

MAPE = (100 / m) * Σ(|y_i - p_i| / y_i).

Если несколько строк имеют одинаковые значения, каждая такая строка учитывается отдельно. Гарантируется, что после пропуска неподходящих строк для указанного игрока остаётся хотя бы одна строка.

Формат ввода

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

player,actual_moves,predicted_moves

В столбце player записано имя игрока. В столбцах actual_moves и predicted_moves записано целое число либо пустая строка, обозначающая пропуск.

Стандартный ввод содержит одну строку с именем игрока, для которого требуется найти MAPE.

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

Выведите значение MAPE в процентах с двумя знаками после точки.

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

Ограничения

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

Длина имени игрока — от 4 до 7 символов. Имя во входных данных совпадает с именем хотя бы одной строки файла.

Если значение в actual_moves не пропущено, оно является целым числом от 0 до 120. Если значение в predicted_moves не пропущено, оно является целым числом от 0 до 130.

Количество строк, участвующих в вычислении MAPE, не меньше 1.

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

Куда дальше