В этой статье мы узнаем о типах линейной регрессии и о том, как ее реализовать с помощью библиотеки scikitlearn. Мы также узнаем об особом типе линейной регрессии, известном как Полиномиальная регрессия.

Линейная регрессия - это первая модель, которую кто-либо реализует, когда начинает изучать машинное обучение. Линейная регрессия - очень полезная модель. У него много хороших функций, и с его помощью можно достичь разных целей.

Когда используется линейная регрессия? Какие существуют типы линейной регрессии?

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

Различные типы линейной регрессии:

  • Простая линейная регрессия
  • Множественная линейная регрессия
  • Полиномиальная регрессия

ПРОСТАЯ ЛИНЕЙНАЯ РЕГРЕССИЯ:

В простой линейной регрессии получается связь между двумя продолжающимися переменными. Одна переменная является зависимой переменной, а другая переменная - независимой переменной. Зависимая переменная зависит от независимой переменной. Зависимая переменная обозначается как «y», а независимая переменная обозначается «x». Линия линейной регрессии - это прямая линия.

Простая линейная регрессия обозначается:

y = b0 + b1*x

Здесь y - зависимая переменная. x - независимая переменная. b1 - коэффициент независимой переменной. b0 - перехват

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

Реализация простой линейной регрессии:

#Importing the Libraries
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#Importing the Data
data = pd.read_csv('Salary_Data.csv')

#Separating the target and data values
X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values

#Splitting the Dataset
from sklearn.model_selection import train_test_split
X_train , X_test , y_train , y_test = train_test_split(X, y, test_size = 0.2 , random_state = 3)

#Training the data
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train,y_train)

#Predicting the values
y_pred = regressor.predict(X_test)

#Checking the efficiency of the model
from sklearn import metrics
print(metrics.mean_squared_error(y_test, y_pred))
print(metrics.r2_score(y_test , y_pred))
print(metrics.mean_absolute_error(y_test , y_pred))
print(np.sqrt(metrics.mean_squared_error(y_test, y_pred)))
#Getting the Coefficient and intercept of the Regression Line
print(regressor.coef_)
print(regressor.intercept_)

Примечание. Этапы реализации могут различаться в зависимости от типа данных в наборе данных.

МНОЖЕСТВЕННАЯ ЛИНЕЙНАЯ РЕГРЕССИЯ:

В множественной линейной регрессии существует более одной независимой переменной. Множественная линейная регрессия представлена ​​как:

y = b0 + b1*x1 + b2*x2 + ….. + bn*xn

  • y - Зависимая переменная
  • x1, x2,…. , xn - независимые переменные
  • b0, b1,… .., bn - Коэффициенты

Связь между независимой и зависимой переменной может быть как положительной, так и отрицательной. Для Ex: x1, x2, x3 могут иметь положительную связь, тогда как другие независимые переменные могут иметь отрицательную связь.

Реализация множественной линейной регрессии:

#Importing the Libraries
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#Importing the Data
data = pd.read_csv('Startups.csv')

#Separating the target and data values
X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values

#Encoding the Categorical Data
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers = [('encoder', OneHotEncoder(), [3])], remainder='passthrough')
X = np.array(ct.fit_transform(X))

#Splitting the Dataset
from sklearn.model_selection import train_test_split
X_train , X_test , y_train , y_test = train_test_split(X, y, test_size = 0.2 , random_state = 3)

#Training the data
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train,y_train)

#Predicting the values
y_pred = regressor.predict(X_test)

#Printing the predicted and actual valuesprint(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))

#Checking the efficiency of the model
from sklearn import metrics
print(metrics.mean_squared_error(y_test, y_pred))
print(metrics.r2_score(y_test , y_pred))
print(metrics.mean_absolute_error(y_test , y_pred))
print(np.sqrt(metrics.mean_squared_error(y_test, y_pred)))

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

ПОЛИНОМИЧЕСКАЯ РЕГРЕССИЯ:

Полиномиальная регрессия - это особый тип линейной регрессии. Связь между зависимыми и независимыми переменными не является линейной.

Обозначается:

y = b0 + b1*x1 + b2* x1² + ⋯ +bn* xn

Применение полиномиальной регрессии включает в себя оценку уровня пострадавших / смертности во время пандемии или эпидемии, прогнозирование результата матча по крикету и т. Д. Он также широко используется в области химикатов.

Почему полиномиальная регрессия называется полиномиальной «линейной» регрессией?

Полиномиальная регрессия называется полиномиальной линейной регрессией, потому что коэффициенты независимой переменной остаются «линейными». Только независимые переменные не являются линейными. Создавая модель, мы пытаемся найти значения членов коэффициентов, таких как b1, b2,…., Bn, но мы не пытаемся найти значения самой независимой переменной. Вот почему полиномиальная регрессия до сих пор называется полиномиальной линейной регрессией.

Реализация полиномиальной регрессии:

#Importing the Libraries
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#Importing the Data
data = pd.read_csv('Position_Salaries.csv')

#Separating the target and data values
X = data.iloc[:, 1:-1].values
y = data.iloc[:, -1].values

#Training the data
from sklearn.preprocessing import PolynomialFeatures
from sklearn.model_selection import LinearRegression
poly_reg = PolynomialFeatures(degree = 2)
X_poly = poly_reg.fit_transform(X)
lin_reg_2 = LinearRegression()
lin_reg_2.fit(X_poly, y)

#Visualizing the Polynomial Regression Plot
plt.scatter(X, y, color = 'red')
plt.plot(X, lin_reg_2.predict(poly_reg.fit_transform(X)), color = 'blue')
plt.show()

# Predicting a new result with Polynomial Regression
lin_reg_2.predict(poly_reg.fit_transform([[6.5]]))

#Getting the Coefficient and intercept of the Regression Line
print(lin_reg_2.coef_)
print(lin_reg_2.intercept_)

ПРИМЕЧАНИЕ. Изменение степени на большее число может привести к чрезмерной подгонке модели.

Ура ... Вот и конец! .. В этой статье мы узнали о различных типах линейной регрессии и о том, как ее реализовать с помощью sklearn!

Спасибо, что прочитали эту статью. Если вам понравилась эта статья, пожалуйста, оставьте несколько аплодисментов, чтобы выразить свою признательность. Следуйте за мной, чтобы увидеть больше подобных статей . Если у вас есть какие-либо сомнения / вопросы или отзывы относительно этой статьи, свободно обращайтесь ко мне в разделе комментариев. Хорошего дня :)!