01 Реальный ML-пайплайн / Python

Погода не
угадывается.
Она считается.

26 лет наблюдений, 18 признаков и шесть моделей. Лучший результат сохраняется в forecast.txt.

Рабочий период
2000 — 2026
Train / test
80 / 20
Лучшая MAE
1.77°C
forecast.out
RUN / 2026-06-16

Средняя температура / следующий день

16.67°C
0.03°C к последнему дню
01 JUNФАКТ → ПРОГНОЗ16 JUN
MODELWeather features gradient
TEST MAE1.77°C
01 / DAYS 9 656

дней после подготовки признаков

02 / MODELS 6

подходов в одном сравнении

03 / TEST 1 932

последних дней модель не видит при обучении

04 / ERROR 1.77°

средняя абсолютная ошибка лучшей модели

02 Наблюдения / 2000—2026

Погодная история
без декораций.

Последние строки CSV: средняя температура, диапазон min/max и осадки. Выберите окно и наведитесь на нужный день.

weather_2000_2026.csv Последний фрагмент ряда
15.06.2026 16.7°C min 13.7° / max 21.0° осадки 0.0 мм
средняя min — max осадки
FEATURE DICTIONARY / 18

Поля, которые уже готовит data.py

temp_avgtemp_mintemp_maxwind_speed previous_temp_avgtwo_days_ago_temp_avgthree_day_temp_avg seven_day_temp_avgtemp_changeseason_sinseason_cos season_sin_2season_cos_2season_sin_3season_cos_3 previous_temp_minprevious_temp_maxprevious_wind_speed

03 Проверка / MAE

Шесть моделей.
Никаких фаворитов.

Для всех — один временной split. Побеждает минимальная MAE на последних 20% данных.

MODEL COMPARISONMAE / шкала 1.70—1.90°C
EARLY STOPPINGФактические эпохи / лимит 10 000
TIME SPLITБез перемешивания
TRAIN7 724 дня2000-01-08 → 2021-03-01
TEST1 932 дняпоследние 20%

Будущее не попадает в обучение. Порядок временного ряда сохранён.

04 Веса / лучший запуск

Что двигает
прогноз.

Реальные веса последнего обучения: вправо — положительный вклад, влево — отрицательный.

WEATHER FEATURES GRADIENTLearned weights
bias +0.432

05 Архитектура / 7 этапов

От CSV до
forecast.txt

Семь понятных этапов: данные, признаки, обучение, сравнение и запись прогноза.

01data.py

Загрузка и признаки

pandas читает CSV, сдвигает ряд, считает rolling 3/7 и сезонные гармоники.

9 663 → 9 656
02preprocessing.py

Временной split

Первые 80% уходят в train, последние 20% остаются честной проверкой.

order preserved
03training.py

Единый запуск

Шесть моделей обучаются и оцениваются через общий слой оркестрации.

6 candidates
04gradient_model.py

Свои градиенты

Веса, bias, MSE и early stopping реализованы обычными функциями Python.

no ML framework
05evaluation.py

Одна метрика

Результаты приводятся к MAE, чтобы сравнение моделей оставалось честным.

test_error ↓
06forecasting.py

Следующий день

Лучшая модель получает последние данные и сезонность будущей даты.

2026-06-16
07reporting.py

Проверяемый вывод

Один результат печатается в консоль и сохраняется в отдельный файл.

forecast.txt
ENTRYmain.py
data.pypreprocessing.py
baselinelineargradient
evaluation.pyforecasting.py
OUTPUTforecast.txt

06 Последний сохранённый прогноз

Следующий день
в одном числе.

Дата прогноза следует за последней строкой CSV. Обновится датасет — обновится и следующий день.

Последнее наблюдение
15 июня 2026 / 16.7°C
Прогноз
16 июня 2026 / 16.67°C
Выбранная модель
Weather features gradient
forecast.txtsaved

01Next day forecast

02-----------------

03Model: Weather features gradient

04Last known date: 2026-06-15 00:00:00

05Forecast date: 2026-06-16

06Last temp avg: 16.7

07Predicted next temp avg: 16.67

07 Почему результату можно верить

Проверка важнее
эффектной цифры.

Сайт показывает не обещание точности, а текущий проверяемый срез проекта и его ограничения.

01

Без утечки будущего

Лаги и rolling-средние строятся только по прошлым дням через shift(1).

02

Test идёт после train

Данные не перемешиваются: проверка отражает работу модели на более позднем периоде.

03

Общая метрика

MAE переводит все шесть подходов в одну понятную величину — средний промах в градусах.

04

Результат сохраняется

Модель, дата, последнее наблюдение и прогноз остаются в forecast.txt.

MODEL SELECTION MAE= 1n i=1n |ŷiyi|

Средний промах модели в градусах

GRADIENT TRAINING MSE= 1n i=1n (ŷiyi)2

Функция потерь при градиентном обучении

SEASON CYCLE θk=2πkd365 fk(d)=[sin(θk),cos(θk)]

Цикл года без разрыва между декабрём и январём

08 Beta / следующий цикл

Проект уже работает.
Но ещё не закончен.

Сейчас доступен проверенный статичный срез. Следом — live-пайплайн и история прогнозов.

DONE01

Рабочий ML-пайплайн

Данные → признаки → модели → оценка → прогноз.

DONE02

Веб-досье проекта

Метрики, графики, веса и архитектура в одном интерфейсе.

NEXT03

Live API

Запуск Python-пайплайна и свежий прогноз прямо с сайта.

NEXT04

История прогнозов

Сравнение прогнозов с фактом и накопленная ошибка по датам.

LAB05

История с 1884 года

Отдельный режим для 52 031 строки расширенного датасета.

LAB06

Новые признаки

Давление, осадки, нормализация и дополнительные гармоники.