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

Наш набор данных в большинстве случаев содержит количественные переменные, поэтому нам нужно увидеть, как эти переменные соотносятся друг с другом. Построение модели линейной регрессии, чтобы увидеть, существует ли какая-либо линейная связь между переменными, может быть удобным. Тем не менее, иногда это слишком сложная задача, и визуализация результата становится довольно утомительной. Здесь вам на помощь приходят две функции Seaborn — lmplot() и regplot(), обе функции очень похожи, но по-своему разные.

Обзор

Мы будем работать с набором данных Iris, возьмем любую из двух его функций и построим модель линейной регрессии, чтобы увидеть взаимосвязь между функциями и визуализировать результаты с помощью Matplotlib, а затем мы будем использовать функции Seaborn для визуализации линейной зависимости посредством регрессии, а также посмотрите, одинаковы ли визуализации или они различаются, потому что Seaborn сам по себе не предназначен для статистического анализа. Однако графики регрессии в Seaborn добавляют визуальное руководство, позволяющее увидеть закономерности в наших данных во время EDA.

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

from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(X_train[:,0].reshape(-1, 1), X_train[:,1].reshape(-1, 1))
# Visualizing
plt.scatter(X_train[:,0],X_train[:,1],c=y_train,cmap=plt.cm.Set1)
plt.plot(X_train[:,0], y_pred_train, color = "red",linewidth=2.9)
plt.title("SepalLength VS SepalWidth ")
plt.xlabel("Sepal Length")
plt.ylabel("Sepal Width")
plt.show()

PS: я разделил данные на данные для обучения и тестирования, но в итоге использовал только X_train (потому что мы пытаемся увидеть связь между двумя переменными). Итак, в представленной ниже визуализации учитывались длина и ширина чашелистиков.

Как видно, невооруженным глазом эти две переменные слабо связаны и почти не обнаруживают взаимосвязи.

Давайте попробуем визуализировать ту же регрессию, используя Seaborn.

regplot()

%matplotlib inline
sns.regplot(x=X_train[:,0].reshape(1,-1), y=X_train[:,1].reshape(1,-1),color='blue')plt.title("SepalLength VS SepalWidth (Testing set)")
plt.xlabel("Sepal Length")
plt.ylabel("Sepal Width")

Визуализация regplot() точно такая же, как и выше (та, которую мы строим с помощью линейной модели).

lmplot()

Давайте рассмотрим lmplot()

sns.lmplot(x='sepal length (cm)', y='sepal width (cm)',data=df,hue='Class')
plt.gcf().set_size_inches(15, 8)

В приведенном выше коде я устанавливаю hue=’Class’(Species in Iris dataset) и вижу волшебство на графике ниже.

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

Более четкую визуализацию можно увидеть ниже:

Код для приведенной выше визуализации:

sns.lmplot(x=’sepal length (cm)’, y=’sepal width (cm)’,data=df,col=’Class’,hue=’Class’,col_wrap=2)
plt.gcf().set_size_inches(16, 6)

Заключение:

В этой статье мы узнали о двух функциях Seaborn; regplot() и lmplot(), которые используются для определения линейных отношений между переменными посредством регрессии.

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

Полный код доступен здесь.

Спасибо!!