Первый fit и predict на своих данных
Содержание курса
В прошлом уроке мы разобрались, что данные делятся на признаки и цель, и научились выделять X и y из готовой таблицы. Теперь пройдём полный цикл: создадим DataFrame вручную, обучим на нём линейную регрессию и попросим её предсказать значения для новых строк.
DataFrame с признаками и целевой переменной: создание X и y
Начнём с данных, которые будут нашим сквозным примером. Мы моделируем прокат велосипедов: два признака — температура воздуха и влажность — и одна цель — количество прокатов за день.
import pandas as pd
data = {
'температура': [10, 18, 25, 30],
'влажность': [60, 55, 70, 45],
'прокатов': [120, 210, 280, 350]
}
df = pd.DataFrame(data)
Таблица содержит четыре строки — это четыре наблюдения. Каждая строка описывает один день: какой была погода и сколько велосипедов взяли в аренду.
Теперь разделяем её на X и y:
y = df['прокатов']
X = df.drop(columns=['прокатов'])
y — это pandas Series с четырьмя числами: [120, 210, 280, 350]. X — DataFrame из двух столбцов, температура и влажность, и тех же четырёх строк.
Почему целевой столбец нельзя оставлять в X? Модель обучается искать связь между признаками и целью. Если передать прокатов как признак, правильный ответ окажется прямо во входных данных — это утечка целевой переменной в обучение. Качество модели на тренировочных данных может выглядеть искусственно высоким, но при реальном прогнозе значение цели недоступно: мы как раз и хотим его предсказать. После drop в X остаётся только то, что будет известно в момент прогноза: погодные условия без информации о результате.
Проверить, что столбцы разделены правильно, просто:
print(list(X.columns)) # ['температура', 'влажность']
print(y.name) # 'прокатов'
Этот список столбцов важен — он понадобится позже, когда будем формировать новые строки для предсказания.
