Линейная регрессия ищет линейную зависимость между признаками (X) и целевой переменной (y) в виде уравнения прямой:
y = w₁·x₁ + w₂·x₂ + ... + wₙ·xₙ + b
Или в упрощенном виде для одного признака:
y = w·x + b
Где:
- w (weight) — коэффициент наклона (slope, угловой коэффициент)
- b (bias) — свободный член (intercept, смещение)
Что такое Slope (наклон)?
Slope (коэффициент наклона) показывает, на сколько единиц изменится y при изменении x на 1 единицу.
Геометрический смысл:
- Это тангенс угла наклона прямой к оси X
- Чем больше slope, тем круче прямая
- Положительный slope → прямая идет вверх
- Отрицательный slope → прямая идет вниз
- Slope = 0 → горизонтальная прямая (y не зависит от x)
Практический пример:
# Модель: цена доставки = 55·расстояние + 170
model.coef_[0] = 55.0 # slope
Интерпретация: Каждый дополнительный километр увеличивает стоимость доставки на 55 рублей.
Если расстояние = 10 км → цена ≈ 55·10 + 170 = 720 руб
Если расстояние = 11 км → цена ≈ 55·11 + 170 = 775 руб
Разница = 775 - 720 = 55 руб (это и есть slope!)
В sklearn:
print(model.coef_) # Массив коэффициентов
# Для одного признака: [55.0]
# Для нескольких: [55.0, -10.5, 3.2]
print(model.coef_[0]) # Первый коэффициент
# 55.0
Что такое Intercept (свободный член)?
Intercept (свободный член) — это значение y, когда все признаки равны нулю.
Геометрический смысл:
- Точка пересечения прямой с осью Y
- Сдвиг прямой вверх или вниз относительно начала координат
Практический пример:
# Модель: цена доставки = 55·расстояние + 170
model.intercept_ = 170.0 # intercept
Интерпретация: Базовая стоимость доставки (фиксированная плата) составляет 170 рублей, даже если расстояние = 0.
Если расстояние = 0 км → цена = 55·0 + 170 = 170 руб
Важно понимать:
Intercept не всегда имеет практический смысл:
- ✅ Цена доставки при расстоянии = 0 → имеет смысл (минимальная плата)
- ❌ Цена квартиры при площади = 0 м² → не имеет смысла (нет таких квартир)
В таких случаях intercept — это просто математическая константа для корректировки модели.
В sklearn:
print(model.intercept_) # Одно число
# 170.0