Краткое руководство по использованию Seaborn’s Pairplot в Python

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

Как говорится, картинка красит тысячу слов.

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

Набор данных

Набор данных, который мы используем для этого руководства, является подмножеством обучающего набора данных, используемого в рамках соревнования по машинному обучению, проводимого Xeek и FORCE 2020 (Bormann et al., 2020). Он выпущен под лицензией NOLD 2.0 от правительства Норвегии, подробности о которой можно найти здесь: Норвежская лицензия на открытые правительственные данные (NLOD) 2.0.

Полный набор данных доступен по следующей ссылке: https://doi.org/10.5281/zenodo.4351155.

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

Кроме того, вы можете загрузить подмножество данных, используемых в этом руководстве, вместе с записной книжкой из репозитория GitHub:



Видеоурок по парному графику Seaborn

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

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

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

import seaborn as sns
import pandas as pd

Чтобы стилизовать графики Seaborn, я установил стиль darkgrid.

# Setting the stying of the Seaborn figure
sns.set_style('darkgrid')

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

df = pd.read_csv('Data/Xeek_Well_15-9-15.csv')
# Remove high GR values to aid visualisation
df = df[df['GR']<= 200]

В дополнение к загрузке данных я удалил значения Gamma Ray (GR) выше 200 API, чтобы облегчить визуализацию этих данных. В идеале вы должны проверить, почему эти точки показывают высокие значения, прежде чем удалять их.

Создание парного графика Seaborn из всех данных

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

sns.pairplot(df)

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

Если мы внимательно посмотрим на полученную фигуру, мы увидим, что все наши переменные показаны вдоль осей y и x. По диагонали у нас есть гистограмма, показывающая распределение каждой из переменных.

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

Построение определенных столбцов

Если мы хотим показать только несколько переменных из нашего фрейма данных, нам сначала нужно создать список переменных, которые мы хотим исследовать:

cols_to_plot = ['RHOB', 'GR', 'NPHI', 'DTC', 'LITH']

В приведенном выше примере я создал новую переменную cols_to_plot и присвоил ее списку, содержащему RHOB, GR, NPHI, DTC and LITH. Первые четыре из них являются числовыми, а последний — категориальным, который будет использоваться позже.

Затем мы можем вызвать наш парный график и передать кадр данных с этим списком следующим образом:

sns.pairplot(df[cols_to_plot])

Когда мы запускаем это, мы получаем гораздо меньшую цифру только с интересующими нас переменными.

Изменение диагонали с гистограммы на KDE

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

Для этого мы просто добавляем в аргумент ключевого слова: diag_kind равно kde вот так:

sns.pairplot(df[cols_to_plot], diag_kind='kde')

Что возвращает следующую цифру:

Добавление линии регрессии к нашим точечным графикам

Если мы хотим определить отношения в диаграммах рассеяния, мы можем применить линию линейной регрессии, что просто делается путем добавления ключевого слова: kind и присвоения его 'reg'.

sns.pairplot(df[cols_to_plot], kind='reg', diag_kind='kde')

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

Однако, поскольку цвет линии такой же, как цвет точки, нам нужно изменить его, чтобы сделать его более заметным.

Мы можем сделать это, добавив ключевое слово plot_kws, а затем нам нужно передать словарь, который затем будет содержать line_kws, которому затем будет передан еще один объект словаря для нашего color, которому мы установим красный цвет.

# Use plot_kws to change regression line colour
sns.pairplot(df[cols_to_plot], kind='reg', diag_kind='kde',
             plot_kws={'line_kws':{'color':'red'}})

Когда мы запускаем код, мы получаем парный график с красной линией, что значительно упрощает его просмотр.

Раскраска по категориям

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

В этом наборе данных у нас есть переменная под названием LITH, которая представляет различные литологии, которые были идентифицированы по измерениям ГИС.

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

Чтобы использовать эту переменную, все, что мы делаем, это добавляем аргумент hue, передаем столбец 'LITH' из нашего списка и запускаем код.

sns.pairplot(df[cols_to_plot], hue='LITH')

То, что мы получаем, — это парный график, раскрашенный каждой из категорий внутри этой переменной.

Если мы внимательно посмотрим на данные, у нас будут сланцы выделены синим цветом, песчаник — зеленым, а известняк — красным, и из них мы можем получить некоторое представление о наших данных. Например, мы смотрим на сланец, мы видим, что у нас есть большой пик в переменной GR около 100 API и меньший розовый пик для мела около 25 API. Таким образом, мы сразу можем получить представление о диапазоне для каждой из литологий.

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

Стилизация диагонального графика

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

В этом примере мы изменим цвет, передав ключевое слово color и установив для него красный цвет.

sns.pairplot(df[cols_to_plot], diag_kws={'color':'red'})

Когда мы запускаем это, мы получаем следующий график:

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

Мы установим это значение на 5 и запустим код.

sns.pairplot(df[cols_to_plot], diag_kws={'color':'red', 'bins':5})

Который возвращает эту цифру с пятью ячейками и данными, окрашенными в красный цвет.

Стилизация точек

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

sns.pairplot(df[cols_to_plot], diag_kws={'color':'red'}, 
            plot_kws={'color':'green'})

И если мы хотим изменить размер точки, мы просто добавляем аргумент ключевого слова s в словарь. Это уменьшит размер точек.

Изменение размера фигуры Seaborn Pairplot

Наконец, мы можем контролировать размер нашей фигуры очень простым способом, добавив аргумент ключевого слова height, который в этом примере мы установим равным 2. Когда мы запустим этот код, мы увидим, что теперь у нас есть намного меньший график.

sns.pairplot(df[cols_to_plot], height=2)

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

sns.pairplot(df[cols_to_plot], height=2, aspect=2)

Краткое содержание

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

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

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

Рекомендации

Борман, Питер, Аурсанд, Педер, Дилиб, Фахад, Манраль, Сдача и Дишингтон, Питер. (2020). FORCE 2020 Набор данных ГИС и литофаций для соревнований по машинному обучению [Набор данных]. Зенодо. http://doi.org/10.5281/zenodo.4351156