Использование SKlearn для создания моделей линейной регрессии, гребня, лассо.

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

Линейная регрессия возникает из уравнения для линии y = mx + c, где y - зависимая переменная, которая изменяется в соответствии с x, которая является независимой переменной. C - точка пересечения с y, а m - наклон. В терминах ML коэффициент x - это вес, а точка пересечения y или c - смещение. «M» и «c» - это переменные, которые наша машина будет пытаться изучить.

В этой статье мы увидим, как мы можем использовать scikit-learn для выполнения различных типов регрессии, таких как линейная, гребенчатая, лассо и т. Д. Для начала давайте сначала импортируем необходимые библиотеки.

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

Мы начнем с импорта панд для загрузки необходимого набора данных, мы будем использовать matplotlib и seaborn для визуализации, и аналогичным образом мы будем импортировать регрессионные модели из scikit-learn по мере необходимости.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

Загрузка необходимого набора данных

Набор данных, который мы собираемся использовать здесь, - это набор данных Boston, который можно легко загрузить с Kaggle. Этот набор данных содержит медианное значение цен на жилье вместе со всеми характеристиками, от которых зависит цена. Давайте загрузим набор данных и посмотрим, какие столбцы в нем есть.

df = pd.read_csv("C:/Users/DELL/boston.csv")
df.head()

Выполнение анализа данных

Чтобы подготовить набор данных для машинного обучения, нам необходимо выполнить базовый анализ данных в нашем наборе данных. Мы начнем с удаления ненужных столбцов, таких как «Безымянный: 0», как видно на изображении выше.

df.drop('Unnamed: 0', axis=1,inplace=True)

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

df.describe()

Теперь давайте визуализируем взаимосвязь нашей целевой переменной «MEDV» со всеми другими функциональными переменными. Для этого мы будем использовать matplotlib и seaborn.

plt.figure(figsize=(15,30))
cnt=1
for i in df.columns[:-1]:
    plt.subplot(10,3,cnt)
    sns.regplot(x=df[i],y=df['medv'], color = 'green')
    cnt=cnt+1
plt.tight_layout()
plt.show()

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

from sklearn.model_selection import train_test_split

#Splitting the dataset
X_train, X_test, y_train, y_test =  train_test_split(df[['crim','zn','indus','chas', 'nox','rm','age','dis','rad','tax','ptratio','black','lstat']], df['medv'], test_size=0.3, random_state=109)
#Importing Regression Models
from sklearn.linear_model import LinearRegression, Ridge, Lasso

Модель линейной регрессии

Мы начнем с создания модели линейной регрессии и подгоним в нее данные. Чтобы узнать, насколько точна наша модель, мы найдем оценку модели для данных тестирования.

linreg = LinearRegression()
linreg.fit(X_train, y_train)
print("Coefficients: ", linreg.coef_)
print("Intercept: ", linreg.intercept_) #y intercept

Теперь давайте проверим точность модели, используя оценку модели.

print("Accuracy score for training Data", linreg.score(X_train, y_train))
print("Accuracy score for testing Data", linreg.score(X_test, y_test))

Точно так же мы можем использовать модели Ridge и Lasso также для регрессии.

Лассо и регрессия хребта

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

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

Создание модели регрессии лассо

lassoreg = Lasso()
lassoreg.fit(X_train, y_train)
print("Accuracy score for training data", lassoreg.score(X_train,y_train))
print("Accuracy score for test Data", lassoreg.score(X_test,y_test))

Создание модели регрессии гребня

ridgereg = Ridge()
ridgereg.fit(X_train, y_train)
print("Accuracy score for training data", ridgereg.score(X_train,y_train))
print("Accuracy score for test Data", ridgereg.score(X_test,y_test))

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

Прежде чем ты уйдешь

Спасибо за чтение! Если вы хотите связаться со мной, не стесняйтесь обращаться ко мне по адресу [email protected] или в моем профиле LinkedIn. Вы можете просмотреть мой профиль Github для различных проектов по науке о данных и руководств по пакетам.