Seaborn Heatmaps: 13 способов настроить визуализацию матрицы корреляции

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


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

А поскольку визуализация обычно проще к пониманию, чем табличные данные, - тепловые карты, как правило, используются для визуализации корреляционных матриц. Простой способ построить тепловую карту в Python - это использовать библиотеку Seaborn.

Аргументы тепловой карты Seaborn

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

Но что еще мы можем получить из тепловой карты, кроме простого графика корреляционной матрицы?

В двух словах: ОЧЕНЬ МНОГОЕ.

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

Итак, перейдем к делу!

Начало работы с Seaborn

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

#importing all the libraries needed
import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
tips_df = sns.load_dataset('tips')
tips_df.head()
Обратите внимание: если вы используете Google Colab или какой-либо пакет Anaconda, вам не нужно устанавливать Seaborn; вам нужно только импортировать его. В противном случае, используйте эту ссылку для установки Seaborn.

Наши данные, которые называются Tips (предварительно установленный набор данных в библиотеке Seaborn), имеют 7 столбцов, состоящих из 3 числовых и 4 категориальных признаков. Каждая строка отражает тип клиента (будь то мужчина или женщина, курильщик или некурящий), который ужинает или обедает в определенный день недели. Также фиксируется общая сумма счета, чаевые и размер стола для гостя. (Для получения дополнительной информации о предварительно установленных наборах данных в библиотеке Seaborn, кликните здесь).

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

Вот как выглядит DataFrame после обработки данных:

Посмотреть, как были обработаны данные, можно здесь.

Как упоминалось ранее, функция тепловой карты Seaborn может принимать 18 аргументов.

Вот как выглядит функция со всеми аргументами:

sns.heatmap(data, vmin=None, vmax=None, cmap=None,center=None, robust=False, annot=None, fmt=’.2g’, annot_kws=None, linewidths=0, linecolor=’white’, cbar=True, cbar_kws=None, cbar_ax=None, square=False, xticklabels=’auto’, yticklabels=’auto’, mask=None, ax=None, **kwargs)

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

Чтобы лучше понять аргументы, мы сгруппируем их в 4 категории:

  1. Основы;
  2. Регулировка оси (измерительной шкалы);
  3. Эстетика;
  4. Изменение формы матрицы.

Основы

  1. Самый важный аргумент в функции - ввод данных, поскольку конечной целью является построение корреляции. Метод .corr() будет добавлен к данным в качестве первого аргумента.
sns.heatmap(df_new.corr())

2. Достаточно интерпретировать данные, используя только первый аргумент. Для еще более точной интерпретации необходимо добавить аргумент annot=True, который помогает отобразить коэффициент корреляции.

sns.heatmap(df_new.corr(), annot = True)

3. В некоторых случаях, коэффициенты корреляции могут приближаться к 5 десятичным знакам. Хорошим приемом для уменьшения отображаемого числа и улучшения читабельности является вставка аргумента fmt =’.3g' или fmt = ‘.1g', потому что, по умолчанию, функция отображает две цифры после запятой (больше нуля), т.е. fmt='.2g' (Это не означает, что она всегда отображает два знака после запятой). Давайте определим аргумент по умолчанию fmt='.1g'.

sns.heatmap(df_new.corr(), annot = True, fmt='.1g')

Для остальной части этого урока мы будем придерживаться значения по умолчанию fmt='.2g'

Регулировка оси (измерительной шкалы)

4. Следующие три аргумента связаны с масштабированием цветовой шкалы. Бывают моменты, когда шкала не начинается с нуля, отрицательного числа или заканчивается на определенном числе - или даже имеет отдельный центр. Все это можно настроить, указав эти три аргумента: vmin минимальное значение шкалы; vmax максимальное значение шкалы; и center=. По умолчанию, все три не указаны. Допустим, мы хотим, чтобы наша цветовая шкала была от -1 до 1 и была центрирована на 0.

sns.heatmap(df_new.corr(), annot = True, vmin=-1, vmax=1, center= 0)

Одно очевидное изменение, кроме изменения масштаба, заключается в изменении цвета. Это связано с изменением center от None до Zero или любое другое число. Но это не означает, что мы не можем вернуть прошлый цвет или изменить его на любой другой. Сейчас посмотрим, как это сделать.

Эстетика

5. Сейчас изменим цвет, используя аргумент cmap

sns.heatmap(df_new.corr(), annot = True, vmin=-1, vmax=1, center= 0, cmap= 'coolwarm')

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

6. По умолчанию, толщина и цвет границы каждой строки матрицы установлены на 0 и белый соответственно. Бывает, когда тепловая карта может выглядеть лучше с некоторой толщиной границы и изменением цвета. В этом случае, применяются аргументы linewidths и linecolor. Давайте укажем linewidths и linecolor на 3 и black соответственно.

sns.heatmap(df_new.corr(), annot = True, vmin=-1, vmax=1, center= 0, cmap= 'coolwarm', linewidths=3, linecolor='black')

Для остальной части этого урока мы вернемся к значениям аргументов cmap, linecolor и linewidths по умолчанию. Это можно сделать с помощью вставки cmap=None, linecolor='white' и linewidths=0 или не вставляя аргументы вообще (что мы и собираемся делать).

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

sns.heatmap(df_new.corr(), annot = True, cbar_kws= {'orientation': 'horizontal'} )

8. Также бывают случаи, когда лучше вообще убрать цветовую шкалу. Это можно сделать, указав cbar=False.

sns.heatmap(df_new.corr(), annot = True, cbar=False)

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

9. Посмотрите поближе на матрицу выше - каждая ячейка прямоугольной формы. Мы можем изменить форму ячеек на квадратную с помощью аргумента square=True.

sns.heatmap(df_new.corr(), annot = True,square=True)

Изменение формы матрицы

Изменение всей формы матрицы с прямоугольной на треугольную не так просто. Для этого нам нужно импортировать методы NumPy .triu() и .tril(), а затем указать аргумент тепловой карты Seaborn, который называется mask=

.triu() является методом в NumPy, который возвращает нижний треугольник любой заданной ему матрицы, в то время как .tril() возвращает верхний треугольник любой заданной ему матрицы.

Идея состоит в том, чтобы отправить матрицу корреляции в метод NumPy, а затем передать ее в аргумент mask, чтобы создать маску в матрице тепловой карты. Давайте посмотрим, как это работает, ниже.

Сначала с помощью np.trui() метода:

matrix = np.triu(df_new.corr())sns.heatmap(df_new.corr(), annot=True, mask=matrix)

Теперь с помощью np.tril() метода:

mask = np.tril(df_new.corr())sns.heatmap(df_new.corr(), annot=True, mask=mask)

В заключение

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

Размещено в блоге DataStart


Источник: m.vk.com

Комментарии: