Разные виды сюжетов, которые могут пригодиться!

В моей статье Анализ для всего? вы узнали, что такое анализ данных и какие шаги предпринимаются для его выполнения.

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

Что ж, на этот раз я решил изменить свои статьи, добавив больше «технического» содержания. ДА, мы собираемся обсудить коды Python, функции и математику, которая за ними стоит.
Эй, подождите, не надо уже всем скучать! Хорошо, позвольте мне рассказать вам историю и, может быть, сделаю ее интересной :)

Краткая история…

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

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

Мишу умна и хорошо умеет обращаться с числами, в отличие от нас, поэтому она решила исследовать виды ирисов, упомянутые ее бабушкой. Она обнаружила, что это три вида: setosa, virginica и versicolor. Она даже нашла набор данных, который дал ее длину чашелистика, ширину чашелистика, длину лепестка и ширину лепестка вида.

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

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

import numpy as np 
import pandas as pd 
import seaborn as sns
import matplotlib.pyplot as plt
import os
for dirname, _, filenames in os.walk('/kaggle/input'):
    for filename in filenames:
        print(os.path.join(dirname, filename))

Приведенный выше фрагмент кода содержит библиотеки, которые нам необходимо импортировать для выполнения базовой предварительной обработки и визуализации данных. Библиотека ‘numpy’ довольно известна математическими функциями, которые она предоставляет для базового программирования. Библиотека ‘pandas’ помогает в обработке данных, т. е. при чтении файлов csv. Библиотека ‘seaborn’ используется для создания красочных статистических графиков в Python. 'matplotlib', как следует из названия, помогает нам построить набор данных с функциями. 'os' библиотека помогает нам импортировать данные из наших систем на платформу кодирования. (Поскольку код написан на платформе Kaggle, мы видим kaggle / input)

data=pd.read_csv('/kaggle/input/iris-flower-dataset/IRIS.csv')
data.head()
data.groupby('species').agg(['mean','median'])

pd.read_csv читает файл csv и выдает вывод в табличном формате, а data.head () помогает вам заглянуть в таблицу набора данных (давайте просто скажем предупреждение о том, каковы метки столбцов и цифры под ними). ‘Data.groupby (var)’ группирует по видам и выдает среднее и медианное значение для каждого из них. «Агг» помогает нам представить среднее и медианное значение для функций, как показано ниже.

data.groupby('species').std()

Этот выдает стандартное отклонение каждой особенности трех имеющихся у нас видов.

sns.set(style="ticks")
plt.figure(figsize=(12,10))
plt.subplot(2,2,1)
sns.boxplot(x='species',y='sepal_length',data=data)
plt.subplot(2,2,2)
sns.boxplot(x='species',y='sepal_width', data=data)
plt.subplot(2,2,3)
sns.boxplot(x='species', y='petal_length', data=data)
plt.subplot(2,2,4)
sns.boxplot(x='species', y='petal_width', data=data)
plt.show()

Мы импортировали библиотеку seaborn как «sns». В этой библиотеке есть несколько действительно хороших графиков для визуализации данных, которые мы увидим через некоторое время. Приведенный выше код предназначен для построения коробчатой ​​диаграммы. sns.boxplot () - это функция, которая позволяет нам это делать. «Plt.subplot ()» помогает нам использовать одно и то же окно рисунка в строках и столбцах, в данном случае (2, 2), т.е. 4.

Я почти уверен, что мы все выучили бокс-сюжеты и научились их рисовать. Но чтобы освежить вашу память, у нас есть цветная рамка, которую мы видим ниже, которая представляет межквартильный диапазон с линией посередине, которая представляет собой медианное значение дня. Усы с обеих сторон представляют собой минимум и максимум того же самого. Что ж, мы действительно видим небольшие серовато-черные ромбовидные структуры возле наших диаграмм. Эти ромбы представляют собой "выбросы" в данных, то есть слишком большие или маленькие значения, которые не попадают в диапазон.

sns.FacetGrid(data,hue="species",height=3).map(sns.distplot,"petal_length").add_legend()
sns.FacetGrid(data,hue="species",height=3).map(sns.distplot,"petal_width").add_legend()
sns.FacetGrid(data,hue="species",height=3).map(sns.distplot,"sepal_length").add_legend()
sns.FacetGrid(data,hue="species",height=3).map(sns.distplot,"sepal_width").add_legend()
plt.show()

«Sns.FacetGrid ()» отображает набор данных на несколько осей, которые отображаются в виде сетки строк и столбцов, которые показывают уровни переменных в наборе данных. Переменная «оттенок» отображает подмножества данных разными цветами, в данном случае в зависимости от вида. FacetGrid.map () упрощает построение графика по каждой оси, указывая один или несколько столбцов в фрейме данных, как мы уже упоминали длину лепестка, ширину чашелистника и т. Д. Мы можем указать тип графика (в нашем случае мы использовали distplot ) хотим. Distplot - это функция, которая отображает гистограмму данных, а также функцию распределения ядра по ней. «Add_legend» сообщает нам, какой цвет используется для отображения подмножества данных, в основном для удобства пользователя.

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

И последнее, но не менее важное, мы подошли к графикам корреляции, то есть дающим нам соотношение между двумя переменными по осям X и Y. Эти графики могут быть диаграммами рассеяния или контурными диаграммами в соответствии с нашими потребностями. Диагональные графики (самокоррелированные графики) строятся по-другому, то есть в форме графиков одномерного распределения. Эти графики распределения могут быть построены в виде гистограмм или функций ядерной плотности.

#pairplot
sns.set_style("whitegrid")
sns.pairplot(data,hue='species',height=3)
plt.show()

Для части кодирования мы можем использовать встроенную функцию «sns.pairplot» и ввести переменные данных и определить, что нам нужно различать виды, поэтому добавим им некоторый «оттенок».

Парный график действительно дает четкое представление о том, как коррелируют переменные, и дает нам четкое представление о том, как модель будет учиться с помощью этих чисел и классифицировать, если мы попросим ее сделать это!

Завершая эту статью по-настоящему заманчивой цитатой:

«Графическая элегантность часто проявляется в простоте дизайна и сложности данных»

- Эдвард Р. Тафт (Визуальное отображение количественной информации)

Не забудьте подписаться на Публикацию Lean Programmer, чтобы увидеть больше таких статей, и подпишитесь на нашу рассылку tinyletter.com/TheLeanProgrammer