Улучшение прогноза солнечной выработки

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

Условие

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

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

Среднеквадратичная ошибка MSE определяется формулой MSE = (1 / q) * Σ(pred_i - actual_i)^2, где q — число строк с известным прогнозом модели. Требуется найти отношение MSE_базовой / MSE_модели: оно показывает, во сколько раз модель лучше базового прогноза по MSE. Если значения MSE базовой модели и модели совпадают, коэффициент считается равным 1.00.

В файле data.csv первая строка является заголовком, разделитель — запятая, кодировка — UTF-8. В столбце model_kwh пропуск записан как пустое поле. Строки с пропущенным model_kwh не участвуют ни в вычислении среднего, ни в вычислении обеих ошибок. Для любого допустимого запроса остаётся хотя бы две участвующие строки, а MSE модели строго больше нуля.

Формат ввода

В стандартном вводе записаны два целых числа a и b через пробел — первый и последний месяц рассматриваемого периода.

Файл data.csv, расположенный рядом с программой, содержит столбцы month, day, actual_kwh, model_kwh.

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

Выведите одно число — отношение MSE_базовой / MSE_модели с двумя знаками после точки.

Ограничения

1 <= a <= b <= 12.

В файле от 300 до 2000 строк данных, в предоставленном файле — 360 строк.

month — целое число от 1 до 12.

day — целое число от 1 до 30.

actual_kwh — целое число от 0 до 5000.

model_kwh — целое число от 0 до 5000 либо пустое поле.

Длина каждой строки файла не превышает 64 символов.

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

Куда дальше