Самое короткое и понятное объяснение с нуля построчно
Линейная регрессия отвечает за моделирование отношений между переменными путем подбора прямой линии.
Это простейшая линейная связь между двумя переменными «вектор x» и «вектор y» (зависимая и независимая).
«Вектор x» и «вектор y» — это векторы, состоящие из определенного количества компонентов:
Для полного понимания изучите библиотеку NumPy. Это библиотека для работы с многомерными массивами и матрицами.
import numpy as np X = np.array([4.5, 5, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0])
Количество компонентов в «Векторе x» всегда равно количеству компонентов в «Векторе y».
y = np.array([34, 44, 45, 53, 53, 60, 65, 70])
«x»с индексом«i» и «y»с индексом«i» являются компонентами «Вектор x» и «вектор y». И «i» = 1..n. Итак:
Время найти «βс индексом 0» и «βс индексом 1» (отрезок и коэффициент):
X = np.vstack((np.ones(len(X)), X)).T # [[1. 4.5] # [1. 5. ] # [1. 5.5] # [1. 6. ] # [1. 6.5] # [1. 7. ] # [1. 7.5] # [1. 8. ]]
Это равно:
Нахождение значений «вектора β» из уравнений является подгонкой модели:
Давайте сделаем это шаг за шагом:
Xt = X.T Xt_mul_X = Xt.dot(X) # [[ 8. 50.] # [ 50. 323.]]
Xt_mul_X_inv = np.linalg.inv(Xt_mul_X) # [[ 3.8452381 -0.5952381] # [-0.5952381 0.0952381]]
Xt_mul_y = Xt.dot(y) # [ 424. 2750.5]
res = Xt_mul_X_inv.dot(Xt_mul_y) # [-6.82142857 9.57142857]
Давайте сложим все вместе:
Здесь «Перехват» — это «βс индексом 0», а «Коэффициент» — это «βс индексом 1».
Сравним результаты с библиотекой sklearn:
Тот же результат. Давайте двигаться вперед!
Матрица с тремя переменными:
А здесь мы получили три коэффициента, потому что «X» здесь — матрица с тремя переменными.
Время использовать эти коэффициенты для предсказания!
X.T.dot(coefficients) + intercept
Просто умножьте «X» на коэффициенты и добавьте точку пересечения.
Теперь собираем все вместе:
Как видите, прогнозируемые значения близки к реальным.
Давайте сравним с библиотечным методом «sklearn»:
Тот же результат.
Теперь, после того как вы поняли, как работает линейная регрессия, пришло время узнать, как вы можете использовать это исследование в реальной жизни:
Найдите полный код здесь: