Почему Сиборн?

Когда вы выполняете визуализацию данных или пояснительный анализ данных, вы обычно исследуете распределения всех интересных переменных, их совместные распределения или получаете сводную статистику (минимальное, максимальное, среднее значение и т. Д.) По некоторым категориальным переменным. Вам могут быть удобны ваши библиотеки (например, Matplotlib) или пакеты (например, ggplot2). Так почему Сиборн? Действительно, существует огромное количество библиотек визуализации данных. Я голосую за Seaborn за эффективность кода и привлекательность графики. Seaborn создает более привлекательные и информативные статистические графики с помощью нескольких строк кода. Если вы используете Matplotlib, вы обнаружите, что Seaborn использует меньше синтаксиса и имеет больше тем по умолчанию. Также легко настроить эстетику с помощью простых команд (sns.set_style и sns.set_palette), как я покажу вам в этой статье. Кстати, весь код в этой статье можно скачать по этой ссылке на github.

Стоит сравнить и сопоставить Seaborn, Bokeh и Plotly. Самая большая разница в том, что Bokeh и Plotly - это библиотеки интерактивной визуализации. Я написал серию статей об инструментах визуализации данных, в том числе Панды-Боке для упрощения потрясающих интерактивных графиков, Использование Seaborn для простого создания красивых графиков, Эффективные графики с помощью Plotly и « Создавайте красивые географические карты с помощью Plotly ». Моя цель в этих статьях - помочь вам создавать экспонаты и идеи для визуализации данных легко и профессионально. Если вы хотите принять все эти коды визуализации данных или повысить квалификацию своей работы, взгляните на них.

Почему Squarify?

Круговая диаграмма - это типичный способ представления пропорций путем разделения круговой диаграммы на части. Еще один визуально привлекательный способ - это карта дерева, которая отображает иерархические данные с использованием вложенных фигур в прямоугольнике. Ниже представлена ​​древовидная карта, показывающая расходы прошлого и этого года. Разве это не приятно визуально? Как ты это делаешь? Это легко сделать с помощью модуля Squarify, и я покажу вам код для этого.

Визуализация данных и объяснение модели

Визуализация данных и объяснимость модели - два неотъемлемых аспекта проекта по науке о данных. Это бинокль, помогающий вам увидеть закономерности в данных и историях в вашей модели. В моих сообщениях Объясните свою модель с помощью значений SHAP, Объясните любые модели с помощью значений SHAP - используйте KernelExplainer, Объясните свою модель с помощью LIME и « Объясните свою модель с помощью Microsoft InterpretML »», Я объясню, как использовать SHAP, LIME и Microsoft InterpretML для объяснения модели. В этой статье я демонстрирую использование Seaborn для визуализации данных. Я буду использовать данные о качестве красного вина из Kaggle, тот же набор данных, который я использовал в статьях о значениях SHAP. Я выбираю одни и те же данные как для визуализации данных, так и для объяснения модели во всех этих статьях, чтобы вы могли увидеть, как они идут рука об руку.

Графики помогут вашей аудитории увидеть вашими глазами

Студентка поделилась со мной, что она знает, как кодировать разные сюжеты, но просто не знает, что строить или как выбрать лучший способ построения. На самом деле она имеет в виду на чем сосредоточить внимание и в чем история. Поэтому, прежде чем строить график, подумайте о самой истории. (Это помешает вам строить график ради построения графика.) Рассказ истории в науке о данных не означает, что вам нужно построить историю, подобную Алиса в стране чудес. История в науке о данных означает четкое описание взаимосвязей между переменными и предсказуемой динамики. Например, история может быть распределением X или положительной или отрицательной взаимосвязью между X и Y. Если есть причинно-следственная связь, такая как «продажи в Y увеличились из-за маркетинговой кампании X», это даже лучше. Вы можете начать с обычного сюжета (причудливый сюжет не обязательно поможет вам попасть в точку). Пока сюжет помогает вам понять суть, это отличный сюжет.

Типичные типы графиков в исследовательском анализе данных

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

  1. Отображение распределения X и
  2. Отображение распределения Y по другой категориальной переменной X и
  3. Отображение взаимодействия двух или трех переменных.

Сначала позвольте мне загрузить данные. Этот набор данных имеет целевую переменную «качество» в диапазоне от низкого до высокого (0–10) и следующие входные переменные: фиксированная кислотность, летучая кислотность, лимонная кислота, остаточный сахар, хлориды, свободный диоксид серы, общий диоксид серы, плотность, pH, сульфаты и спирт. Все переменные числовые. Всего 1599 образцов вин.

Я собираюсь сделать две категориальные переменные для нашего анализа. Я использую функцию дискретизации на основе квантилей pd.qcut() в Pandas, чтобы разрезать каждую переменную на два блока равного размера.

Тип 1: отображение распределения X

(1.1) Гистограмма

(1.2) Древовидная карта с Squarify

Чтобы использовать Squarify для создания Treemap, вы сначала выполните «pip install squarify»:

Я создаю список, как показано ниже, для построения карты дерева:

Это так просто сделать:

Но вы скажете: подождите, меня не устраивают ни цвет, ни надписи, ни размер шрифта. Как настроить древовидную карту? Это легко сделать с помощью приведенного ниже кода:

Теперь древовидная карта выглядит правильно!

Тип 2: отображение распределения Y по другой категориальной переменной

(2.1) Блок-диаграмма I

Часто нам нужно знать сводную статистику, включая минимум, максимум и медианное значение. На прямоугольной диаграмме отображается пятизначная сводка набора данных: минимум, первый квартиль (Q1, 25%), медиана (Q2, 50%), третий квартиль (Q3, 75%) и максимум. Поле охватывает данные от первого квартиля до третьего квартиля.

Интерпретация:

  • Качественные вина ассоциируются с высоким уровнем алкоголя. Узкая рамка (Q1-Q5) качества - «5» указывает на то, что уровень алкоголя в винах среднего качества достаточно стабильный.
  • Выбросы качества - «5» показывают, что некоторые вина имеют заметный высокий уровень алкоголя (›11).

Типичная коробчатая диаграмма может не показать достаточной дифференциации для выбросов, таких как вина «Качество - 5» на приведенном выше графике. Мы обратимся к коробчатому типу II.

(2.2) Коробчатая диаграмма II

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

(2.3) Заговор Риджлайна (иногда называемый Джойплотом)

График Ridgeline показывает распределение числового значения для нескольких групп. Давайте сначала посмотрим на график результатов. Я подробно объясню код.

На приведенном выше графике представлена ​​обширная информация:

  • Вина более высокого качества (например, «7» и «8» на вертикальной оси) ассоциируются с более высоким уровнем алкоголя.
  • Качество - «5» вин: Распределение уровня алкоголя более узкое, чем у других, что указывает на его относительную консистенцию по уровню алкоголя.

Код:

  • FacetGrid() - очень полезный способ Seaborn для построения уровней нескольких переменных. row="quality" назначает каждую группу качества строке, а hue="quality" назначает цвета в соответствии с группой качества. В приведенном выше коде объявляется facetGrid, а затем назначается объект g.
  • .map(fun,iter) - это функция Python, применяющая данную функцию к каждому элементу данной итерации (список, кортеж и т. Д.). Итак, g.map(sns.kdeplot,"alcohol",...) применяет функцию построения графика sns.kdeplot к «алкоголю». Поскольку объект g имеет группу качества в качестве строки, каждая строка будет отображать распределение «алкоголя».

(2.4) Сюжет для скрипки (используйте оттенок для еще одной переменной)

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

Мы assignhue="sulphates_rank", чтобы добавить третью переменную «Sulphates_rank» в дополнение к «алкоголю» и «качеству». На этом графике показано следующее:

  • Скрипки поднимаются выше по мере повышения качества, а это означает, что высококачественные вина ассоциируются с высоким уровнем алкоголя.
  • Вина высочайшего качества (Качество - «8») ассоциируются только с высоким уровнем сульфатов.

(2.5) Участок роя (также называемый "Участком пчелиного грева")

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

Тип 3: отображение взаимодействия двух переменных

(3.1) Пузырьковая диаграмма

Двумерная пузырьковая диаграмма может отображать до четырех измерений данных: координаты X и Y, размер пузырьков и цвет пузырьков. Однако он может стать слишком занятым, чтобы передавать ваши сообщения. Поэтому я рекомендую три измерения. Для этого вы устанавливаете цвет hue и размер size как те же переменные, как я делаю ниже:

Этот график содержит интересные выводы:

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

(3.2) Диаграмма рассеяния: совместное распределение гексбина

График Hexbin показывает взаимосвязь двух числовых переменных с распределениями каждой переменной вверху и сбоку соответственно. Чтобы показать совместное распределение, окно построения разделено на шестнадцатеричные биты, и подсчитывается количество точек на шестнадцатеричные двоичные ячейки. Цвет обозначает это количество баллов.

График показывает следующие результаты:

  • Распределение кислотности по летучести симметрично и нормально; Напротив, распределение алкоголя искажается в сторону низких уровней.
  • Темные гексбины указывают на то, что многие вина имеют уровень алкоголя от 9 до 10 и уровень летучей кислотности от 0,4 до 0,7.

(3.3) Точечная диаграмма: с линейной регрессией

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

(3.4) График плотности

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

(3.5) Парная диаграмма

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

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

Парный график позволяет вам напрямую управлять размером фигуры, указав height= в параметре. Ниже присваиваю height=2.2. Это удобная функция, потому что мне не нужно использовать matplotlib для назначения размера фигуры (например, plt.figure (figsize (6.3))).

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

Если хотите, можете скачать ноутбук по этой ссылке на github.