Регрессионные графики в Seaborn с использованием regplot и lmplot
В этом руководстве вы научитесь использовать Seaborn для создания графиков регрессии с помощью функций sns.regplot()
и sns.lmplot()
. Может показаться странным, что Seaborn предлагает две функции для построения регрессивных отношений. Не волнуйтесь — это руководство упростит все, что вам нужно знать.
К концу этого урока вы научитесь следующему:
Как использовать функции Seaborn
regplot()
иlmplot()
для построения графиков регрессииКак понять разницу между двумя функциями
Как настроить графики с небольшими кратными, заголовками и метками осей
Как построить графики логистической регрессии и построить регрессионные отношения в совместных графиках Seaborn
Содержание
Понимание функций Seaborn regplot() и lmplot()
Seaborn предлагает две функции для создания графиков регрессии: regplot и lmplot. Несмотря на кажущееся дублирование, эти две функции предоставляют различный функционал.
Основные различия между двумя регрессионными функциями заключаются в следующем:
Функция
sns.lmplot()
возвращает график (точнее, FacetGrid) и может использоваться для отображения дополнительных переменных с помощью цветовой семантики.sns.regplot()
возвращает объект осей, что позволяет легко применять методы уровня осей.
Давайте рассмотрим, как можно использовать функцию sns.lmplot()
для построения линейной зависимости:
# Создание простого lmplot в Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
# Загрузка набора данных о пингвинах
df = sns.load_dataset('penguins')
# Построение lmplot
sns.lmplot(data=df, x='flipper_length_mm', y='body_mass_g')
# Отображение графика
plt.show()
В приведенном выше примере мы загрузили набор данных о пингвинах, встроенный в Seaborn. Затем мы использовали функцию lmplot()
для построения отношения между длиной ласт и массой тела. Это привело к созданию изображения ниже:

Теперь давайте посмотрим, как мы можем использовать функцию regplot()
для построения того же отношения:
# Создание простого regplot в Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
# Загрузка набора данных о пингвинах
df = sns.load_dataset('penguins')
# Построение regplot
sns.regplot(data=df, x='flipper_length_mm', y='body_mass_g')
# Отображение графика
plt.show()
В приведенном выше блоке кода мы просто изменили функцию на использование функции regplot()
. Это привело к следующему изображению:

Мы видим, что, сравнивая оба графика, можно заметить, что они отображают одну и ту же зависимость, хотя визуально они различаются. Например, функция lmplot()
возвращает график, который был без осевых линий и имеет другой размер.
Когда линия лучше соответствует данным, значение R-квадрата результата регрессии будет приближаться к 1.
Как построить график зависимости различных заказов с помощью Seaborn lmplot
Функции regplot()
и lmplot()
в Seaborn позволяют строить взаимосвязи регрессии различных порядков. Для этого мы можем использовать аргумент order=
, который позволяет передавать различные порядки в любую из функций.
Давайте загрузим другой набор данных, который использует квадратичную зависимость. В следующем блоке кода мы укажем другой порядок:
# Изменение порядка Seaborn графика регрессии
import seaborn as sns
import matplotlib.pyplot as plt
# Загрузка набора данных о расходе топлива
df = sns.load_dataset('mpg')
# Построение графика регрессии с порядком 2
sns.lmplot(data=df, x='horsepower', y='mpg', order=2)
# Отображение графика
plt.show()
Путём изменения порядка до 2, мы получаем график ниже, где кривая лучше отображает данные:

В следующем разделе вы узнаете, как добавить дополнительную переменную, используя семантику цвета.
Добавление оттенков переменных в Seaborn lmplot
Чтобы добавить дополнительную переменную с использованием семантики цвета, можно передать параметр hue=
в функцию lmplot()
. Это основное отличие между двумя функциями: только функция lmplot()
позволяет передать дополнительную переменную для отображения ее цветом.
Давайте рассмотрим, как мы можем разделить данные по другой переменной. В качестве дополнительного бонуса мы добавим разделение данных с использованием различных маркеров. Это позволит сделать данные более доступными, особенно при печати в черно-белом режиме.
# Использование параметра Hue для добавления дополнительной переменной в Seaborn lmplot()
import seaborn as sns
import matplotlib.pyplot as plt
# Загрузка набора данных о пингвинах
df = sns.load_dataset('penguins')
# Построение lmplot с использованием параметра Hue для видов пингвинов и настройкой маркеров
sns.lmplot(data=df, x='flipper_length_mm', y='body_mass_g', hue='species', markers=['x', 'o', '*'])
# Отображение графика
plt.show()
В приведенном выше блоке кода мы разделяем набор данных с использованием параметра hue=
. Это позволяет передать дополнительный метку столбца, что делит данные на разные цвета. Также это строит отдельные линии регрессии для каждой подкатегории данных.

В следующем разделе вы научитесь строить график зависимости логистической регрессии с помощью lmplot
в Seaborn.
Построение логистической регрессии на графике Seaborn
Функции regplot()
и lmplot()
библиотеки Seaborn позволяют вам построить кривую логистической регрессии, используя параметр
Для моделирования этой зависимости давайте рассмотрим связь между полом пингвина и его массой тела. Чтобы данные были более наглядными, добавим некоторый уровень вертикального разброса, который лучше показывает распределение:
# Преобразование переменной 'sex' в числовой формат
import seaborn as sns
import matplotlib.pyplot as plt
# Загрузка набора данных о пингвинах
df = sns.load_dataset('penguins')
# Преобразование категориальной переменной 'sex' в числовой формат
df['sex'] = df['sex'].map({'Male': 1, 'Female':0})
# Построение логистической регрессии с параметрами y_jitter и logistic
sns.lmplot(data=df, x='body_mass_g', y='sex', logistic=True, y_jitter=0.05)
# Отображение графика
plt.show()
В приведенном выше блоке кода мы указали Seaborn построить линию логистической регрессии, а также добавили немного "джиттера" к точечным диаграммам. Это приводит к следующему изображению ниже:

В следующем разделе вы узнаете, как строить малые множества (строки и столбцы) визуализаций.
Создание небольших кратных (строк и столбцов) графиков регрессии
Одной из наиболее впечатляющих возможностей библиотеки Seaborn является легкость добавления множественных графиков. Поскольку эти визуализации предполагают наличие нескольких изображений, нам необходимо использовать функцию уровня фигуры lmplot()
. Давайте сначала рассмотрим добавление колонок графиков с использованием параметра
# Создание маленьких графиков регрессии
import seaborn as sns
import matplotlib.pyplot as plt
# Загрузка набора данных о пингвинах
df = sns.load_dataset('penguins')
# Создание маленьких графиков регрессии с использованием параметра col для каждого вида пингвина
sns.lmplot(data=df, x='flipper_length_mm', y='body_mass_g', col='species')
# Отображение графиков
plt.show()
В приведенном выше блоке кода мы добавили col='species'
. Это позволяет выделить каждый вид в свой собственный график и отобразить связи, как показано ниже:

Что замечательно в этом подходе, так это то, что мы можем добавить еще больше информации, используя семантику цвета. Для этого мы можем использовать параметр hue=
, как показано ниже.
# Использование параметра Hue для добавления дополнительной переменной в Seaborn lmplot()
import seaborn as sns
import matplotlib.pyplot as plt
# Загрузка набора данных о пингвинах
df = sns.load_dataset('penguins')
# Построение lmplot с использованием параметра Hue для переменной пола и разделением на графики по видам пингвинов
sns.lmplot(data=df, x='flipper_length_mm', y='body_mass_g', col='species', hue='sex')
# Отображение графиков
plt.show()
При разделении данных с использованием параметра hue=
, мы можем увидеть, как данные распределяются как по видам, так и по полу пингвина, как показано ниже:

Наконец, мы также можем разделить наши мелкие множества, используя параметр row=
. Это позволяет вам создавать матрицу из строк и колонок визуализаций, разделенных по двум разным переменным. Давайте посмотрим, как это выглядит:
# Добавление строк и столбцов данных в Seaborn lmplot
import seaborn as sns
import matplotlib.pyplot as plt
# Загрузка набора данных о пингвинах
df = sns.load_dataset('penguins')
# Построение lmplot с разделением на графики по видам пингвинов и полу
sns.lmplot(data=df, x='flipper_length_mm', y='body_mass_g', col='species', row='sex')
# Отображение графиков
plt.show()
Путем выполнения этого действия, мы разделяем данные на столбцы и строки, используя переменные видов и пола. Это возвращает следующую визуализацию:

В последнем разделе ниже вы научитесь строить график регрессионной зависимости с использованием Seaborn jointplot.
Построение регрессионного графика в Seaborn Jointplot
Seaborn также позволяет вам визуализировать взаимосвязи регрессии с помощью совмещенного графика. Это позволяет вам наглядно увидеть линию регрессии, а также оценить распределение значений каждой из переменных. Давайте посмотрим, как мы можем это сделать:
# Построение совместного графика с контекстом регрессии
import seaborn as sns
import matplotlib.pyplot as plt
# Загрузка набора данных о пингвинах
df = sns.load_dataset('penguins')
# Построение совместного графика с контекстом регрессии
sns.jointplot(data=df, x='flipper_length_mm', y='body_mass_g', kind='reg')
# Отображение графика
plt.show()
В указанном выше блоке кода мы использовали функцию sns.jointplot()
и применили аргумент kind='reg'
, чтобы построить линию регрессии. Ниже представлен полученный результат:

На приведенном выше графике мы построили совместный график с линией регрессии, а также нарисовали гистограммы данных вдоль краев графика.
Заключение
В этом уроке вы научились использовать Seaborn для построения регрессионных графиков с помощью функций sns.regplot()
и sns.lmplot()
. Сначала вы узнали различия между этими двумя функциями. Затем вы научились создавать простые регрессионные графики. После этого вы узнали, как изменять порядок зависимости, а также как строить модели логистической регрессии. Наконец, вы научились создавать небольшие множества визуализаций, а также использовать совместные графики для построения линий регрессии.
Дополнительные ресурсы
Чтобы узнать больше о схожих темах, ознакомьтесь с учебными пособиями ниже:
Линейный график Seaborn – Создавайте линейные графики с помощью Seaborn
Диаграммы рассеяния Seaborn в Python: полное руководство
Seaborn replot – Создание диаграмм рассеяния и линейных диаграмм
Last updated