Анализ больших данных Python
seaborn — это модуль рисования на Python, основанный на matplotlib, с большим количеством функций визуализации и более красивым стилем рисования. Когда мы хотим изучить характеристики одного или пары распределений данных, мы можем использовать несколько функций, встроенных в seaborn, для анализа распределения. данных. Делайте разнообразные визуализации.
В этой статье в качестве инструмента редактирования используется блокнот Jupyter, предоставляющий подробное представление о настройках параметров и конкретном использовании kdeplot, Rugglot, Distplot и Jointplot в Seaborn.
kdeplot в seaborn можно использовать для оценки плотности ядра и визуализации одномерных и двумерных переменных. Его основные параметры следующие:
Давайте рассмотрим несколько примеров, чтобы ознакомиться с реальным использованием вышеуказанных параметров в kdeplot:
Сначала нам нужно подготовить данные. В этой статье в качестве примера данных используются данные радужной оболочки глаза, поставляемые с seaborn. Поскольку код выполняется в блокноте Jupyter, добавлена встроенная волшебная команда %matplotlib, позволяющая отображать изображение в блокноте.
import seaborn as sns
sns.set(color_codes=True)
import matplotlib.pyplot as plt
%matplotlib inline
#Загрузить набор данных радужной оболочки глаза, поставляемый с seaborn, в формате фрейма данных
iris = sns.load_dataset('iris')
#Изолируем значения атрибутов, соответствующие цветам класса setosa
setosa = iris.loc[iris.species == "setosa"].reset_index(drop=True)
#Изолируем значения атрибутов, соответствующие цветам класса Вирджиния
virginica = iris.loc[iris.species == "virginica"].reset_index(drop=True)
Во-первых, мы не изменяем другие параметры, а передаем только данные для наблюдения за нарисованным изображением:
#Нарисуйте оценку плотности ядра параметра Petal_width в радужной оболочке
топор = sns.kdeplot(iris.petal_width)
Добавьте красный цвет заливки и отключите легенду:
ax = sns.kdeplot(iris.petal_width,shade=True,color='r')
Измените распределение плотности ядра:
ax = sns.kdeplot(iris.petal_width,
shade=True,
color='r',
cumulative=True)
Поменяйте местами позиции оси X-Y:
ax = sns.kdeplot(iris.petal_width,
shade=True,
color='r',
vertical=True)
Затем мы рисуем двумерный график совместной оценки плотности ядра:
#Нарисуйте совместную карту оценки плотности ядра лепестка_ширины и лепестка_длины цветков сетозы
топор = sns.kdeplot(setosa.petal_width,
setosa.petal_length)
Измените цветовую схему на синюю и установитеshadow_lowest=True:
ax = sns.kdeplot(setosa.petal_width,
setosa.petal_length,
cmap='Blues',
shade=True,
shade_lowest=True)
Изменитеshadow_lowest=False на основе рисунка выше:
ax = sns.kdeplot(setosa.petal_width,
setosa.petal_length,
cmap='Blues',
shade=True,
shade_lowest=False)
Видно, что область за пределами кривой оценки наименьшей плотности в это время не окрашивается цветовой схемой.
Измените количество интервалов кривой плотности ядра до 5:
ax = sns.kdeplot(setosa.petal_width,
setosa.petal_length,
cmap='Blues',
shade=True,
shade_lowest=False,
n_levels=5)
Видно, что интервал плотности ядра в это время значительно грубее.
Нарисуйте карты оценки плотности ядра двух разных одномерных популяций в одном подграфе. Чтобы различать их, параметры меток определяются отдельно и отображаются в легенде:
ax1 = sns.kdeplot(setosa.petal_width,label='setosa.petal_width')
ax2 = sns.kdeplot(virginica.petal_width,label='virginica.petal_width')
Постройте оценки плотности ядра двух разных 2D-популяций на одном и том же подграфике:
ax1 = sns.kdeplot(setosa.sepal_width,setosa.sepal_length,
cmap='Blues',
shade=True,
shade_lowest=False)
ax2 = sns.kdeplot(virginica.sepal_width,virginica.sepal_length,
cmap='Greens',
shade=True,
shade_lowest=False)
Функция rideplot очень проста. Она используется для рисования фактического положения распределения точек данных в одномерном массиве. То есть она не добавляет никакой математической подгонки и просто отображает записанные значения на оси координат. По сравнению с kdeplot, он может отображать дискретное распределение исходных данных, а его основные параметры следующие:
Постройте график с использованием параметров по умолчанию:
ax = sns.rugplot(iris.petal_length)
Поменяйте оси координат:
ax = sns.rugplot(iris.petal_length,axis='y')
Измените высоту и цвет короткой полосы:
ax = sns.rugplot(iris.petal_length,
color='r',
height=0.2)
Основная функция distplot в seaborn — построение одномерной гистограммы, а также на основе гистограммы можно применять части kdeplot и rideplot. Это очень мощная и практичная функция. Ее основные параметры следующие:
Постройте график с использованием параметров по умолчанию:
ax = sns.distplot(iris.petal_length)
Измените цвета всех объектов, нарисуйте часть коврика и измените количество ячеек до 20:
ax = sns.distplot(iris.petal_length,color='r',
rug=True,
bins=20)
На основе приведенного выше рисунка принудительно подгоните распределение хи-квадрат и используйте словарь параметров, чтобы установить зеленую кривую аппроксимации:
from scipy.stats import chi2
ax = sns.distplot(iris.petal_length,color='r',
rug=True,
bins=20,
fit=chi2,
fit_kws={'color':'g'})
Измените параметрnormal_hist на False, чтобы вертикальная ось отображала частоту вместо плотности (обратите внимание, что части чертежа kde и fit должны быть отключены здесь, иначе вертикальная ось по-прежнему отображает плотность), и используйте hist_kws для передачи словаря для настройки. цвет и прозрачность части гистограммы. Используйте «rug_kws», чтобы передать словарь и настроить цвет некоторых коротких столбцов в «Rugplot»:
ax = sns.distplot(iris.petal_length,color='r',
rug=True,
kde=False,
bins=20,
fit=None,
hist_kws={'alpha':0.6,'color':'orange'},
rug_kws={'color':'g'},
norm_hist=False)
Причина, по которой мы представляем его в порядке kdeplot-rugplot-distplot, заключается в том, что distplot включает в себя связанный контент в kdeplot и Rugplot, а функция Jointplot, которая будет представлена в конце этой статьи, объединяет многие из ранее упомянутых материалов и используется для соединить их. Корреляция, совместное распределение и соответствующие распределения переменных представлены на одном графике. Его основные параметры следующие:
Постройте совместный график парных переменных с настройками параметров по умолчанию:
ax = sns.jointplot(x='sepal_length',y='sepal_width',data=setosa)
Стоит отметить, что совместный график также тщательно иллюстрирует простой коэффициент корреляции Пирсона между парами переменных и результатами p-значения теста корреляции на изображении.
Установите для параметра вида значение «reg» и добавьте к совместному графику подобранную линию линейной регрессии и результаты оценки плотности ядра:
ax = sns.jointplot(x='sepal_length',y='sepal_width',data=setosa,
kind='reg')
Измените вид на «hex», чтобы сгенерировать оценки плотности гексагонального ядра для совместного графа:
ax = sns.jointplot(x='sepal_length',y='sepal_width',data=setosa,
kind='hex')
Измените вид на «kde», чтобы преобразовать гистограммы и диаграммы рассеяния в графики оценки плотности ядра, и установите размер поля маргинальной оси равным 0:
ax = sns.jointplot(x='sepal_length',y='sepal_width',data=setosa,
kind='kde',
space=0,
color='g')
Jointplot также поддерживает наложение слоев. Как и в примере ниже, тип совместного графика, который мы сначала рисуем, ограничен подобранной линией линейной регрессии. На этом основании мы используем метод .plot_joint для наложения слоя оценки плотности ядра:
ax = (sns.jointplot(x='sepal_length',y='sepal_width',data=setosa,
color='g',
kind='reg')).plot_joint(sns.kdeplot, zorder=0, n_levels=10)
Более насыщенные изображения также могут быть наложены в соответствии с вашими конкретными потребностями.
Увеличьте параметр соотношения, чтобы уменьшить карту ребер:
ax = sns.jointplot(x='sepal_length',y='sepal_width',data=setosa,
kind='kde',
space=0,
color='g',
ratio=15)
Используйте словарь параметров графики ребер, чтобы добавить содержимое графика кромки и измените количество гистограмм до 15:
ax = sns.jointplot(x='sepal_length',y='sepal_width',data=setosa,
marginal_kws=dict(bins=15, rug=True),
linewidth=1,space=0)
На самом деле, если вы достаточно знаете о matplotlib и seaborn, вы можете получить более информативные и особенные изображения с помощью различных комбинаций!
Выше приведено все содержание этой статьи. Если есть какая-либо ошибка, укажите на нее!