
Лабораторная работа №2 Анализ связей между признаками двумерного набора
данных
Цель работы: изучение связи между признаками двумерного набора данных.
Краткий теоретический материал
Гистограмма — это график, который показывает, как часто в наборе данных встречается то или иное значение. Гистограмма объединяет числовые значения по диапазонам, то есть считает частоту значений в пределах каждого интервала.
Её построение подобно работе метода value_counts(), подсчитывающего количество уникальных значений в списке. value_counts() группирует строго одинаковые величины и хорош для подсчёта частоты в списках с категориальными переменными.
В pandas гистограмму строит специальный метод hist() (от англ. histogram — «гистограмма»). Применять его можно к списку или к столбцу датафрейма: во втором случае название столбца передаётся в параметре. Метод hist() находит в наборе чисел минимальное и максимальное значения, а полученный диапазон делит на области, или корзины. Затем hist() считает, сколько значений попало в каждую корзину, и отображает это на графике.
Параметр bins (пер. «корзины, вёдра») определяет, на сколько областей делить диапазон данных. По умолчанию таких «корзин» 10.
Диаграмма размаха в Python
Описывая распределение, аналитики рассчитывают среднее арифметическое или медиану.
Однако, помимо медианы и среднего, важно знать характерный разброс
— то, какие значения оказались вдали от среднего и насколько их много. Самое простое, что можно посчитать для оценки разброса, — это
минимальное и максимальное значения. Такое описание не всегда точно, подвержено влиянию выбросов. Гораздо более устойчивая оценка — межквартильный размах.
Квартили (от лат. quartus — «четвёртый») разбивают упорядоченный набор данных на четыре части. Первый квартиль Q1 — число, отделяющее первую четверть выборки: 25% элементов меньше, а 75% — больше него. Медиана — второй квартиль Q2, половина элементов больше и половина меньше неё. Третий квартиль Q3 — это отсечка трёх четвертей: 75% элементов меньше и 25% элементов больше него. Межквартильный размах — это расстояние между Q1 и Q3.
Увидеть медиану и квартили в Python можно на специальном графике.
Его называют диаграммой размаха или «ящиком с усами».
«Ящик» ограничен первым и третьим квартилями. Внутри ящика обозначают медиану.
«Усы» простираются влево и вправо от границ ящика на расстояние, равное 1,5 межквартильного размаха (сокращённо IQR, от англ. interquartile range, «межквартильный размах»). В размах «усов» попадают нормальные значения, а за пределами находятся выбросы, изображённые точками. Если правый «ус» длиннее максимума, то он заканчивается максимумом. То же — для минимума и левого «уса».
В Python диаграмму размаха строят методом boxplot() (от англ. box- and-whisker plot — «график „ящик с усами“»).
Срезы данных методом query()
Необходимое условие для среза записывается в строке, которую передают как аргумент методу query(). А метод применяют к датафрейму. В результате получаем нужный срез.
Условия, указанные в параметре query():
• Поддерживают разные операции сравнения: !=, >, >=, <, <=.
• Проверяют, входят ли конкретные значения в список,
конструкцией: Date_To in ["07.07.19", "09.07.2019"]. Если нужно узнать, нет ли в списке определённых значений, пишут так: Date_To not in ["07.07.19", "09.07.2019"].
• Работают с логическими операторами в привычном виде, где «или»
—or , «и» — and, «не» — not. Указывать условия в скобках необязательно. Без
скобок операции выполняются в следующем порядке: сначала not, потом and и, наконец, or.
Диаграмма рассеяния
Часто нужно понимать, как разные значения зависят друг от друга. Возьмём, к примеру, данные о росте и весе людей.
Изучим числовые характеристики: df.describe()
|
height |
weight |
count 7634.000000 |
7634.000000 |
|
mean |
172.640603 |
57.688374 |
std |
4.875440 |
5.274638 |
min |
153.956131 |
37.687478 |
25% |
169.297852 |
54.155792 |
50% |
172.641400 |
57.746296 |
75% |
175.939310 |
61.205201 |
max |
190.888112 |
76.604422 |
...и гистограммы: df.hist()

Гистограммы похожи на графики нормального распределения. Отдельно отметим, что имеем дело с данными о взрослых людях: из числовых характеристик видно, что людей ниже 150 см в выборке нет.
Чтобы найти связь между ростом и весом, их тоже нужно отметить на одном графике, а не на отдельных гистограммах. Зададим рост и вес на осях X и Y соответственно.
При этом необходимо использовать особый тип графиков — scatter (пер. «разброс,рассеивание»).
Передадим значение scatter параметру kind метода plot(): df.plot(x='height', y='weight', kind='scatter')
Есть основная масса точек с наиболее частыми сочетаниями веса и роста. При этом с увеличением роста увеличивается и вес. Но это лишь в среднем. Можно найти уникальные примеры людей с большим весом и малым ростом. Однако есть и совсем пустые зоны: например, люди ростом более 180 см не весят меньше 50 кг.
На графике можно увидеть взаимосвязь между двумя величинами. А также понять, какие данные типичны, а какие — аномальны.
Так, если нам скажут, что есть человек с ростом 190 см и весом 50 кг, мы ответим, что либо неправильно измеряли, либо это очень редкий человек. А

про индивида ростом 170 см и весом более 70 кг известно, что его вес превышает типичное для его роста значение.
Матрица диаграмм рассеяния |
|
|
|
В |
pandas |
есть |
специальный |
метод: pd.plotting.scatter_matrix(df) (от англ. scatter matrix — «матрица рассеяния»).
В наборе данных для каждого человека известен рост , вес и возраст . В столбце male значением 1 обозначен мужской пол, 0 — женский. Построим матрицу рассеяния:
pd.plotting.scatter_matrix(df, figsize=(9, 9))
Для такого графика также можно использовать модуль seaborn – и строить график с помощью функции pairplot.
import seaborn as sns sns.pairplot(df)
Корреляция
Взаимосвязь двух или нескольких величин называется «корреляция». График выше утверждать, что рост и вес взаимосвязаны, или коррелируют. Очевидно не только наличие связи, но и прямая зависимость: чем больше рост, тем больше вес. В таком случае говорят, что корреляция положительная.
Как оценить численно, насколько тесна взаимосвязь? Для этого находят
коэффициент корреляции Пирсона. Он помогает определить наличие линейной связи между величинами и принимает значения от -1 до 1.
Если с ростом первой величины растёт вторая, то коэффициент корреляции Пирсона — положительный.
Если при изменении одной величины другая остаётся прежней, то коэффициент равен 0.
Если рост одной величины связан с уменьшением другой, коэффициент отрицательный.
Чем ближе коэффициент корреляции Пирсона к крайним значениям 1 или -1, тем теснее линейная взаимосвязь. Если значение близко к нулю, значит, линейная связь слабая либо отсутствует вовсе. Бывает, что коэффициент нулевой не потому, что связи между значениями нет, а из-за того, что у неё более сложный, не линейный характер. Потому-то коэффициент корреляции такую связь не берёт.
Коэффициент Пирсона находят методом corr(). Метод применяют к столбцу с первой величиной, а столбец со второй передают в параметре. Какая первая, а какая вторая — неважно:
Порядок выполнения
1.Получить у преподавателя набор данных для проведения анализа согласно цели выполняемой работы.
2.Провести предварительную обработку данных (как в 1 ЛР).
3.Построить точечную диаграмму (матрицу диаграмм рассеяния). Выполнить анализ полученной диаграммы, отвечая на вопрос показывает ли она в среднем определенную зависимость между переменными. Изучите параметры и опишите взаимосвязи. Если параметров слишком много – может потребоваться создать несколько графиков.
4.Исследовать взаимосвязь между переменными с помощью оценки коэффициента корреляции и ковариации.
5.Построить heatmap (тепловую карту корреляции).
6.Выполнить интерпретацию результатов корреляции и ковариации, отвечая на вопросы о наличии (отсутствии) линейной взаимосвязи между переменными.
7.Есть ли в вашем наборе данных столбец, который является целевым признаком? Какие факторы больше всего влияют на целевой признак?
8.Выполнить дополнительные задания преподавателя по варианту.
Содержание отчета
1.Титульный лист
2.Цель работы
3.Вариант задания с кратким описанием набора данных
4.Пояснения и скриншоты по каждому пункту выполнения лабораторной работы
5.Ссылка на ваш Jupyter-ноутбук
6.Расширенный вывод по вашему исследованию