Изображение Dan White 1000 на Shutterstock

Что такое линейная регрессия?

Линейная регрессия — это статистический метод, который используется для прогнозирования переменной на основе другой переменной. зависимая переменная — это переменная, которую мы хотим прогнозировать. Независимая переменная — это та, которую мы используем для прогнозирования значения другой переменной. Например, вы можете использовать линейную регрессию для прогнозирования доходов от продаж компании на основе таких данных, как исторические продажи компании.

Давайте посмотрим на математику

Выражение представляет собой линейное уравнение, которое включает ряд входных значений (X), а решением является прогнозируемый результат для этого набора входных значений (Y). В результате и входное (X), и выходное (Y) значения являются числовыми.

Для простой регрессионной модели форма модели будет следующей:

Y[пред] = B0 + B1*X1+….Bn*Xn

Приведенное выше уравнение также является уравнением линии, которое имеет вид Y=mX+c. Каждому входному значению или столбцу назначается один масштабный коэффициент, известный как коэффициент и обозначаемый заглавной греческой буквой бета в линейном уравнении (B). Добавляется еще один коэффициент, который дает линии дополнительную степень свободы (например, движение вверх и вниз на двумерном графике) и известен как коэффициент пересечения или смещения.

Переменные b0 и b1 должны быть выбраны таким образом, чтобы ошибка была минимизирована. Если для оценки модели используется сумма квадратов ошибок, цель состоит в том, чтобы найти линию, которая больше всего уменьшает ошибку.

Добросовестность

Большинство из нас сталкивались с термином регрессия обычных наименьших квадратов. Это означает, что мы используем наименьшую сумму квадратов ошибок. Разница возводится в квадрат, поэтому есть абсолютная разница, и суммируется.

Ошибка = Y[фактическая] – Y[прогнозируемая]

Интерпретация R²

R-квадрат оценивает разброс точек данных вокруг подобранной линии регрессии.

Значения R-квадрата всегда лежат между 0% и 100%, теперь давайте посмотрим, что они означают:

  • 0% означает, что модель не имеет изменений в переменной отклика вокруг среднего значения.
  • 100% представляет собой модель, которая объясняет все вариации переменной отклика вокруг ее среднего значения.

Проще говоря, чем больше R², тем лучше модель соответствует наблюдениям.

Реализация линейной регрессии в Python

5 основных шагов при реализации линейной регрессии в python:

  1. Импортируйте все необходимые пакеты [Numpy, Pandas и Пакеты визуализации].
  2. Данные для работы.
  3. Создайте модель регрессии и подгоните ее к данным.
  4. Проверьте результаты модели.
  5. Применить модель для прогнозов.

Давайте посмотрим на вышеупомянутые шаги в деталях!

Шаг 1. Импорт пакетов

sklearn.linear_model используется для выполнения линейной и полиномиальной регрессии и соответствующих прогнозов.

Код:

import numpy as np
from sklearn.linear_model import LinearRegression

Шаг 2: Загрузка данных

Для этого примера создания я создаю образец набора данных. С входами как «x» и выходом (предиктором) как «y». Мы создаем 2D-массив с помощью функции numpy.ndarray. Поскольку этот массив должен быть двумерным или, точнее, содержать один столбец и столько строк, сколько необходимо, мы вызываем.reshape( ) в теме. Это именно то, что указывает параметр.reshape() (-1, 1).

Код:

x = np.array([5, 10, 25, 35, 45, 55]).reshape((-1, 1))
y = np.array([5, 25, 15, 25, 32, 38])

Вывод:

Вывод x: [[ 5]

[10]

[25]

[35]

[45]

[55]]

Выход y: [5 25 15 25 32 38]

Как вы видели, x имеет два измерения, поэтому x.shape — это (6, 1), тогда как y имеет только одно измерение, а y.shape — (0, 1). (6,).

Шаг 3: Создание модели и подгонка данных

Чтобы создать и загрузить модель, мы используем переменную с именем «модель» и загружаем класс «Линейная регрессия ()».

Код:

модель = линейная регрессия ()

Теперь, когда мы загрузили модель. Мы можем предоставить ему несколько параметров.

  • fit_intercept:Эта функция относится к логическому типу, по умолчанию это True. Это вычисляет точку пересечения B0[True]или приравнивает ее к нулю [False].
  • normalize:Эта функция логического типа, которая решает, следует ли нормализовать входные переменные (True) или нет (False).

В примере мы выбрали значения по умолчанию для всех параметров.

Подгоняем модель!

Код:

модель.fit(х, у)

Используя существующие входные и выходные данные (x и y) в качестве аргументов, .fit() вычисляет наилучшие значения весов b0 и b1. Другими словами, .fit() соответствует модели. Он возвращает self, который является переменной модели. В результате последние два утверждения можно заменить следующими:

Код:

модель = LinearRegression().fit(x, y)

Это просто короче и проще. Это делает то же самое, что и предыдущее утверждение.

Шаг 4. Результаты

После того, как мы подогнали модель, мы можем получить данные, чтобы увидеть, правильно ли она работает, и интерпретировать ее. С помощью .score() в модели мы можем получить коэффициент детерминации (R2):

Код:

r_squared = model.score(x, y)

print("Коэффициент: ", r_squared)

Вывод:

Коэффициент: 0,7008425228672994

Мы также можем получить результаты наклона и пересечения.

Код:

печать('перехват:', model.intercept_)

print('наклон:', model.coef_)

Вывод:

перехват: 8.57917570498915

наклон: [0,50585683]

.intercept_, представляющий коэффициент, B0 и.coef_, представляющий B1, являются атрибутами модели.

Давайте интерпретируем эти результаты.

Точка пересечения [B0], равная ~8,57, означает, что модель предсказывает отклик 8,5, когда x равно 0. Наклон [B1], равный 5,05, означает, что прогнозируемый отклик увеличивается в 5,05 раз, когда x увеличивается на 1.

Шаг 5. Прогнозы

Приступаем к прогнозированию! Как только мы будем довольны результатами. Мы можем начать прогнозирование с помощью функции .predict().

Код:

y_pred = модель.прогноз(х)

print('предсказанный ответ:', y_pred, sep='\n')

Вывод:

прогнозируемый ответ:
[11.10845987 13.63774403 21.22559653 26.28416486 31.34273319 36.40130152]

Регрессионные модели часто используются для прогнозирования на практике. Это означает, что мы можем использовать подобранные модели для определения выходных данных в зависимости от некоторых новых дополнительных входных данных:

Код:

new_predections_of_x = np.arange(3).reshape((-1, 1))

печать (new_predections_of_x)

Функция .arange() из numpy для создания массива с элементами от 0 (включительно) до 3 (не включая), то есть 0, 1 и 2.

Вывод:

[[0]

[1]

[2]]

Код:

y_new = model.predict (new_predections_of_x)

печать (y_new)

Вывод:

[8.5791757 9.08503254 9.59088937]

Заключение

Теперь вы понимаете, что такое линейная регрессия и как использовать Python и три инструмента с открытым исходным кодом для ее реализации: NumPy, scikit-learn и pandas. NumPy можно использовать для управления массивами.
Для реализации линейной регрессии используются следующие шаги:

  1. Импортируйте нужные пакеты и классы
  2. Предоставляйте данные для работы и, в конечном итоге, выполняйте соответствующие преобразования
  3. Создайте регрессионную модель и сопоставьте ее с существующими данными
  4. Проверьте результаты подгонки модели, чтобы узнать, является ли модель удовлетворительной.
  5. Применить модель для прогнозов

Рекомендации





https://machinelearningmastery.com/linear-regression-for-machine-learning/#:~:text=Linear%20regression%20is%20a%20linear,%20input%20variables%20(x).