Введение

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

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

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

Существуют различные типы методов регрессии, каждый из которых подходит для разных сценариев и типов данных. Вот несколько распространенных регрессионных моделей:

  1. Простая линейная регрессия: этот тип регрессии включает в себя одну независимую переменную и линейную связь с зависимой переменной. Предполагается, что связь между переменными может быть аппроксимирована прямой линией.
  2. Множественная линейная регрессия: расширяет простую линейную регрессию за счет включения нескольких независимых переменных. Он предполагает линейную связь между зависимой переменной и независимыми переменными, но с более чем одним предиктором.
  3. Полиномиальная регрессия: в полиномиальной регрессии связь между независимыми и зависимыми переменными моделируется как полином n-й степени. Это позволяет использовать кривые отношения между переменными.
  4. Логистическая регрессия. В отличие от предыдущих типов, логистическая регрессия используется для прогнозирования категориальных результатов или вероятностей. Он используется, когда зависимая переменная является бинарной (например, да/нет) или попадает в ограниченное число категорий.

Примечание. В этом блоге мы сосредоточимся на простой линейной регрессии.

Установки и конфигурации

На вашем компьютере должны быть доступны следующие программы и библиотеки:

  1. Установите Python. Убедитесь, что на вашем компьютере установлен Python, как минимум python 3=.
  2. Установите код Visual Studio. Убедитесь, что на вашем компьютере установлен Visual Studio Code.
  3. Установите Scikit-learn, следуя этим инструкциям.
  4. Другие библиотеки для установки: Matplotlib, Numpy, Pandas и
  5. Установите Блокнот Jupyter. Вам нужно будет установить пакет Jupyter.

Работа с библиотекой: Scikit-learn

Scikit-learn — это библиотека, которая предоставляет обширный API, помогающий специалистам по данным выполнять задачи машинного обучения. На их веб-сайте говорится: Scikit-learn — это библиотека машинного обучения с открытым исходным кодом, которая поддерживает контролируемое и неконтролируемое обучение. Он также предоставляет различные инструменты для подбора модели, предварительной обработки данных, выбора и оценки модели и многие другие утилиты.

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

Как создать простую модель линейной регрессии

Чтобы создать регрессионную модель, отображающую взаимосвязь между линией талии и количеством выполненных приседаний с использованием набора данных Linnerud в Scikit-learn, выполните следующие действия:

Примечание. В этом руководстве мы используем набор данных Scikit-learn linnerud, но вы можете использовать любой набор данных по своему выбору. наша цель — продемонстрировать, как создать простую линейную регрессию.

Импортируйте необходимые библиотеки:

из sklearn.datasets импортировать load_linnerud

импортировать matplotlib.pyplot как plt

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

из sklearn.model_selection импорта train_test_split

Загрузите набор данных Linnerud:

данные = load_linnerud()

Извлеките соответствующие данные и целевые переменные:

линия талии = данные.данные[:, 0]

места = данные.цель[:, 0]

Создайте точечную диаграмму, чтобы визуализировать отношения:

plt.scatter(талия, приседания)

plt.xlabel('Линия талии')

plt.ylabel('Situps')

plt.title («Взаимосвязь между линией талии и ростом»)

plt.show()

Разделите данные на поезд и тест:

X_train, X_test, y_train, y_test = model_selection.train_test_split (талия, приседания, test_size = .33)

Создайте модель регрессии и подгоните данные:

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

model.fit(талия, приседания)

Предскажите приседания на основе значений талии:

situps_predicted = model.predict(талия)

Нанесите линию регрессии на точечный график:

plt.scatter(талия, приседания)

plt.plot (талия, situps_predicted, цвет = «красный», ширина линии = 2)

plt.xlabel('Линия талии')

plt.ylabel('Situps')

plt.title («Взаимосвязь между линией талии и ростом»)

plt.show()

Пример простой линейной регрессии

# importing the required libraries
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets, model_selection, linear_model

# loading the dataset and assigning features to X and target to y
X, y = datasets.load_linnerud(return_X_y=True)
X, y



Output:
Output exceeds the size limit. Open the full output data in a text editor
(array([[  5., 162.,  60.],
        [  2., 110.,  60.],
        [ 12., 101., 101.],
        [ 12., 105.,  37.],
        [ 13., 155.,  58.],
        [  4., 101.,  42.],
        [  8., 101.,  38.],
        [  6., 125.,  40.],
        [ 15., 200.,  40.],
        [ 17., 251., 250.],
        [ 17., 120.,  38.],
        [ 13., 210., 115.],
        [ 14., 215., 105.],
        [  1.,  50.,  50.],
        [  6.,  70.,  31.],
        [ 12., 210., 120.],
        [  4.,  60.,  25.],
        [ 11., 230.,  80.],
        [ 15., 225.,  73.],
        [  2., 110.,  43.]]),
array([[191.,  36.,  50.],
        [189.,  37.,  52.],
        [193.,  38.,  58.],
        [162.,  35.,  62.],
        [189.,  35.,  46.],
...
        [202.,  37.,  62.],
        [176.,  37.,  54.],
        [157.,  32.,  52.],
        [156.,  33.,  54.],
        [138.,  33.,  68.]]))
# selecting the first columns of X and y
X, y = X[:, np.newaxis, 0], y[:, np.newaxis, 0]
X, y


Output:
Output exceeds the size limit. Open the full output data in a text editor
(array([[162.],
        [110.],
        [101.],
        [105.],
        [155.],
        [101.],
        [101.],
        [125.],
        [200.],
        [251.],
        [120.],
        [210.],
        [215.],
        [ 50.],
        [ 70.],
        [210.],
        [ 60.],
        [230.],
        [225.],
        [110.]]),
array([[36.],
        [37.],
        [38.],
        [35.],
        [35.],
...
        [37.],
        [37.],
        [32.],
        [33.],
        [33.]]))
# splitting, training and predicting the data
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=.37) 
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
prediction = model.predict(X_test)

print(prediction[ :5])
print(y_test[ : 5])


Output:
[[37.39169076]
 [35.04957008]
 [37.04613197]
 [33.01461277]
 [37.04613197]]
[[36.]
 [36.]
 [33.]
 [34.]
 [37.]]
# checking error percentage
from sklearn.metrics import mean_squared_error, r2_score

mse = mean_squared_error(y_test, prediction)
print(f'Mse: {mse}')

rmse = np.sqrt(mse)
print(f'Rmse: {rmse}')

r2 = r2_score(y_test, prediction)
print(f'R2: {r2}')


Output:
Mse: 3.1715806176012187
Rmse: 1.7808932078036623
R2: -0.4194486680173286
plt.scatter(X_test, y_test, color='red')
plt.plot(X_test, prediction, color='black', linewidth=3)

plt.show()