- Статистика и анализ данных : теория и практика
- Корреляционная матрица в Python – практическая реализация
- Корреляционная матрица в Python – практическая реализация
- Что такое корреляционный регрессионный анализ?
- Создание корреляционной матрицы в Python
- Заключение
- Читайте ещё по теме:
- Как создать корреляционную матрицу в Python
- Как создать матрицу корреляции в Python
Статистика и анализ данных : теория и практика
Корреляционная матрица (correlation matrix) : таблица, в которой строки и столбцы — это переменные, а значения ячеек —корреляции между этими переменными. Рассмотрим, как можно получить эту матрицу с помощью Python.
wd | Plan | Rev | Visit | Conv | LCH | Price | |
---|---|---|---|---|---|---|---|
date | |||||||
2021-01-06 | 2 | 1200 | 1879 | 183 | 8.74 | 4.13 | 28 |
2021-02-06 | 3 | 1200 | 1431 | 187 | 9.09 | 3.24 | 26 |
2021-03-06 | 4 | 1200 | 547 | 219 | 5.48 | 2.33 | 26 |
2021-04-06 | 5 | 1200 | 1051 | 193 | 8.81 | 2.82 | 27 |
2021-05-06 | 6 | 2200 | 2247 | 309 | 8.09 | 3.20 | 28 |
wd | Plan | Rev | Visit | Conv | LCH | Price | PlanPct | |
---|---|---|---|---|---|---|---|---|
date | ||||||||
2021-01-06 | 2 | 1200 | 1879 | 183 | 8.74 | 4.13 | 28 | 1.57 |
2021-02-06 | 3 | 1200 | 1431 | 187 | 9.09 | 3.24 | 26 | 1.19 |
2021-03-06 | 4 | 1200 | 547 | 219 | 5.48 | 2.33 | 26 | 0.46 |
2021-04-06 | 5 | 1200 | 1051 | 193 | 8.81 | 2.82 | 27 | 0.88 |
2021-05-06 | 6 | 2200 | 2247 | 309 | 8.09 | 3.20 | 28 | 1.02 |
wd | Plan | Rev | Visit | Conv | LCH | Price | PlanPct | |
---|---|---|---|---|---|---|---|---|
wd | 1.00 | 0.84 | 0.72 | 0.84 | -0.03 | -0.10 | 0.31 | 0.13 |
Plan | 0.84 | 1.00 | 0.73 | 0.89 | -0.09 | -0.07 | 0.16 | -0.02 |
Rev | 0.72 | 0.73 | 1.00 | 0.73 | 0.23 | 0.23 | 0.43 | 0.64 |
Visit | 0.84 | 0.89 | 0.73 | 1.00 | -0.33 | 0.00 | 0.16 | 0.09 |
Conv | -0.03 | -0.09 | 0.23 | -0.33 | 1.00 | -0.05 | 0.19 | 0.48 |
LCH | -0.10 | -0.07 | 0.23 | 0.00 | -0.05 | 1.00 | -0.26 | 0.44 |
Price | 0.31 | 0.16 | 0.43 | 0.16 | 0.19 | -0.26 | 1.00 | 0.41 |
PlanPct | 0.13 | -0.02 | 0.64 | 0.09 | 0.48 | 0.44 | 0.41 | 1.00 |
for x in range(corr_mat.shape[0]): corr_mat.iloc[x,x] = 0.0 corr_mat
wd | Plan | Rev | Visit | Conv | LCH | Price | PlanPct | |
---|---|---|---|---|---|---|---|---|
wd | 0.00 | 0.84 | 0.72 | 0.84 | -0.03 | -0.10 | 0.31 | 0.13 |
Plan | 0.84 | 0.00 | 0.73 | 0.89 | -0.09 | -0.07 | 0.16 | -0.02 |
Rev | 0.72 | 0.73 | 0.00 | 0.73 | 0.23 | 0.23 | 0.43 | 0.64 |
Visit | 0.84 | 0.89 | 0.73 | 0.00 | -0.33 | 0.00 | 0.16 | 0.09 |
Conv | -0.03 | -0.09 | 0.23 | -0.33 | 0.00 | -0.05 | 0.19 | 0.48 |
LCH | -0.10 | -0.07 | 0.23 | 0.00 | -0.05 | 0.00 | -0.26 | 0.44 |
Price | 0.31 | 0.16 | 0.43 | 0.16 | 0.19 | -0.26 | 0.00 | 0.41 |
PlanPct | 0.13 | -0.02 | 0.64 | 0.09 | 0.48 | 0.44 | 0.41 | 0.00 |
А теперь выведем пары с максимальными корреляциями c их значениями
pc=corr_mat.abs().idxmax() cormax=corr_mat.loc[pc.index,pc.values] df_cor=pd.DataFrame() df_cor.sort_values(by=['cor'])
colname cor Price Rev 0.43 LCH PlanPct 0.44 Conv PlanPct 0.48 PlanPct Rev 0.64 Rev Plan 0.73 wd Plan 0.84 Plan Visit 0.89 Visit Plan 0.89 Однако очень хотелось бы вывести не только значения корреляций,но и соответствующие им p-значения, чтобы понимать насколько значима корреляция.Сделаем это в несколько шаговС помощью метода corr() получаем корреляционную матрицу
wd Plan Rev Visit Conv LCH Price PlanPct wd 1.00 0.84 0.72 0.84 -0.03 -0.10 0.31 0.13 Plan 0.84 1.00 0.73 0.89 -0.09 -0.07 0.16 -0.02 Rev 0.72 0.73 1.00 0.73 0.23 0.23 0.43 0.64 Visit 0.84 0.89 0.73 1.00 -0.33 0.00 0.16 0.09 Conv -0.03 -0.09 0.23 -0.33 1.00 -0.05 0.19 0.48 LCH -0.10 -0.07 0.23 0.00 -0.05 1.00 -0.26 0.44 Price 0.31 0.16 0.43 0.16 0.19 -0.26 1.00 0.41 PlanPct 0.13 -0.02 0.64 0.09 0.48 0.44 0.41 1.00 С помощью функции nympy tril обнуляем значения выше диагоналиdf_cor=pd.DataFrame(np.tril(df_cor, k=-1),columns=df_cor.columns,
index=df_cor.columns)
wd Plan Rev Visit Conv LCH Price PlanPct wd 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0 Plan 0.84 0.00 0.00 0.00 0.00 0.00 0.00 0.0 Rev 0.72 0.73 0.00 0.00 0.00 0.00 0.00 0.0 Visit 0.84 0.89 0.73 0.00 0.00 0.00 0.00 0.0 Conv -0.03 -0.09 0.23 -0.33 0.00 0.00 0.00 0.0 LCH -0.10 -0.07 0.23 0.00 -0.05 0.00 0.00 0.0 Price 0.31 0.16 0.43 0.16 0.19 -0.26 0.00 0.0 PlanPct 0.13 -0.02 0.64 0.09 0.48 0.44 0.41 0.0 Метод stack() поворачивает уровень меток столбцов, превращая его в индекс строк
помещаем столбцы в еще один уровень индекса строк Результатом становится объект Series
df_cor=df_cor.stack()
wd wd 0.00 Plan 0.00 Rev 0.00 Visit 0.00 Conv 0.00 . PlanPct Visit 0.09 Conv 0.48 LCH 0.44 Price 0.41 PlanPct 0.00 Length: 64, dtype: float64df_cor=df_cor[df_cor.abs()>0]
Plan wd 0.84 Rev wd 0.72 Plan 0.73 Visit wd 0.84 Plan 0.89 Rev 0.73 Conv wd -0.03 Plan -0.09 Rev 0.23 Visit -0.33 LCH wd -0.10 Plan -0.07 Rev 0.23 Conv -0.05 Price wd 0.31 Plan 0.16 Rev 0.43 Visit 0.16 Conv 0.19 LCH -0.26 PlanPct wd 0.13 Plan -0.02 Rev 0.64 Visit 0.09 Conv 0.48 LCH 0.44 Price 0.41 dtype: float64Обозначаем столбец с корреляцией и сбрасываем индекс
df_cor=df_cor.rename("pearson")
df_cor=df_cor.reset_index()
level_0 | level_1 | pearson | |
---|---|---|---|
0 | Plan | wd | 0.84 |
1 | Rev | wd | 0.72 |
2 | Rev | Plan | 0.73 |
3 | Visit | wd | 0.84 |
4 | Visit | Plan | 0.89 |
5 | Visit | Rev | 0.73 |
6 | Conv | wd | -0.03 |
7 | Conv | Plan | -0.09 |
8 | Conv | Rev | 0.23 |
9 | Conv | Visit | -0.33 |
10 | LCH | wd | -0.10 |
11 | LCH | Plan | -0.07 |
12 | LCH | Rev | 0.23 |
13 | LCH | Conv | -0.05 |
14 | Price | wd | 0.31 |
15 | Price | Plan | 0.16 |
16 | Price | Rev | 0.43 |
17 | Price | Visit | 0.16 |
18 | Price | Conv | 0.19 |
19 | Price | LCH | -0.26 |
20 | PlanPct | wd | 0.13 |
21 | PlanPct | Plan | -0.02 |
22 | PlanPct | Rev | 0.64 |
23 | PlanPct | Visit | 0.09 |
24 | PlanPct | Conv | 0.48 |
25 | PlanPct | LCH | 0.44 |
26 | PlanPct | Price | 0.41 |
Добавляем колонку с p-значением
df_cor['p']=df_cor.apply(lambda r:
round(stats.pearsonr(df[r.level_0],df[r.level_1])[1],4),axis=1)
level_0 | level_1 | pearson | p | |
---|---|---|---|---|
0 | Plan | wd | 0.84 | 0.0000 |
1 | Rev | wd | 0.72 | 0.0000 |
2 | Rev | Plan | 0.73 | 0.0000 |
3 | Visit | wd | 0.84 | 0.0000 |
4 | Visit | Plan | 0.89 | 0.0000 |
5 | Visit | Rev | 0.73 | 0.0000 |
6 | Conv | wd | -0.03 | 0.8848 |
7 | Conv | Plan | -0.09 | 0.6231 |
8 | Conv | Rev | 0.23 | 0.2256 |
9 | Conv | Visit | -0.33 | 0.0756 |
10 | LCH | wd | -0.10 | 0.5979 |
11 | LCH | Plan | -0.07 | 0.7181 |
12 | LCH | Rev | 0.23 | 0.2167 |
13 | LCH | Conv | -0.05 | 0.7775 |
14 | Price | wd | 0.31 | 0.0973 |
15 | Price | Plan | 0.16 | 0.3897 |
16 | Price | Rev | 0.43 | 0.0175 |
17 | Price | Visit | 0.16 | 0.3941 |
18 | Price | Conv | 0.19 | 0.3096 |
19 | Price | LCH | -0.26 | 0.1587 |
20 | PlanPct | wd | 0.13 | 0.4793 |
21 | PlanPct | Plan | -0.02 | 0.9210 |
22 | PlanPct | Rev | 0.64 | 0.0001 |
23 | PlanPct | Visit | 0.09 | 0.6522 |
24 | PlanPct | Conv | 0.48 | 0.0068 |
25 | PlanPct | LCH | 0.44 | 0.0143 |
26 | PlanPct | Price | 0.41 | 0.0256 |
Убираем значения с p-уровнем значимости больше 0.05
level_0 | level_1 | pearson | p | |
---|---|---|---|---|
0 | Plan | wd | 0.843035 | 0.0000 |
1 | Rev | wd | 0.715471 | 0.0000 |
2 | Rev | Plan | 0.726003 | 0.0000 |
3 | Visit | wd | 0.835415 | 0.0000 |
4 | Visit | Plan | 0.890589 | 0.0000 |
5 | Visit | Rev | 0.732999 | 0.0000 |
11 | Price | Rev | 0.430656 | 0.0175 |
15 | PlanPct | Rev | 0.642399 | 0.0001 |
17 | PlanPct | Conv | 0.483507 | 0.0068 |
18 | PlanPct | LCH | 0.442528 | 0.0143 |
19 | PlanPct | Price | 0.406954 | 0.0256 |
Теперь можно прокомментировать полученные значения корреляции :
Эту последовательность шагов поместим в функцию
def cor_mat_p_val(df): df_cor=df.corr() df_cor=pd.DataFrame(np.tril(df_cor, k=-1),columns=df_cor.columns,
index=df_cor.columns) df_cor=df_cor.stack() df_cor=df_cor[df_cor.abs()>0] df_cor=df_cor.rename("pearson") df_cor=df_cor.reset_index() df_cor['p']=df_cor.apply(lambda r: round(stats.pearsonr(df[r.level_0],df[r.level_1])[1],4),axis=1) return df_cor.query('p
Выведем корреляционную матрицу в виде "тепловой карты"
sns.heatmap(corr_mat, annot=True, fmt='.2f', linewidths=2)
Корреляционная матрица в Python – практическая реализация
Эй, читатели! В этой статье мы будем сосредоточиться на появлении и работе корреляционной матрицы в Python подробно. Итак, давайте начнем сейчас!
Корреляционная матрица в Python – практическая реализация
Эй, читатели! В этой статье мы будем сосредоточиться на появлении и работе корреляционная матрица в питоне подробно. Итак, давайте начнем сейчас!
Что такое корреляционный регрессионный анализ?
В домене Наука и машина науки и машины Мы часто сталкиваемся с ситуациями, в которой нам необходимо проанализировать переменные и выполнять выделение функций. Это когда корреляционный регрессионный анализ входит в картину.
Корреляционный регрессионный анализ позволяет программистам проанализировать отношения между Непрерывные независимые переменные и непрерывная зависимая переменная Отказ
То есть регрессионный анализ оценивает вероятность и взаимосвязь между независимыми переменными набора данных, а также независимыми и независимыми (зависимыми) переменными.
Анализ корреляции регрессионного анализа использует корреляционную матрицу для представления взаимосвязи между переменными набора данных.
Корреляционная матрица представляет собой матричную структуру, которая помогает программистую анализировать взаимосвязь между переменными данных. Он представляет собой корреляционное значение между диапазоном 0 и 1 Отказ
Положительное значение представляет хорошую корреляцию, и отрицательное значение представляет собой низкую корреляцию и значение, эквивалентное нулю (0), не представляет зависимости между конкретным набором переменных.
Можно изгнать следующие наблюдения от регрессионного анализа и матрицы корреляции:
- Понять зависимость между независимыми переменными набора данных.
- Помогает выбрать важные и нередительные переменные набора данных.
- Применимо только к числовым/непрерывным переменным.
Давайте теперь сосредоточимся на реализации корреляционной матрицы в Python.
Создание корреляционной матрицы в Python
Давайте сначала начнем, исследуя набор данных, используемых в этом примере. Как видно ниже, набор данных содержит 4 независимых непрерывных переменных:
- преданность
- атемп
- гул
- скорость ветра
Здесь CNT – это переменная ответа.
Теперь мы создали корреляционную матрицу для цифровых столбцов, используя Corr () Функция как показано ниже:
import os import pandas as pd import numpy as np import seaborn as sn # Loading the dataset BIKE = pd.read_csv("day.csv") # Numeric columns of the dataset numeric_col = ['temp','atemp','hum','windspeed'] # Correlation Matrix formation corr_matrix = BIKE.loc[:,numeric_col].corr() print(corr_matrix) #Using heatmap to visualize the correlation matrix sn.heatmap(corr_matrix, annot=True)
Кроме того, мы использовали Weanborn Heatmamps для визуализации матрицы.
Итак, из вышеуказанной матрицы, следующие наблюдения могут быть нарисованы
- Переменные «TEMP» и «ATEMP» очень коррелируют со корреляционным значением 0,99 Отказ
- Таким образом, мы можем бросить любую одну из двух переменных данных.
Заключение
По этому, мы подошли к концу этой темы. Не стесняйтесь комментировать ниже, если вы столкнетесь с любым вопросом.
До этого, счастливого обучения !!
Читайте ещё по теме:
Как создать корреляционную матрицу в Python
Чем дальше коэффициент корреляции от нуля, тем сильнее связь между двумя переменными.
Но в некоторых случаях мы хотим понять корреляцию между более чем одной парой переменных. В этих случаях мы можем создать матрица корреляции, представляющая собой квадратную таблицу, которая показывает коэффициенты корреляции между несколькими попарными комбинациями переменных.
В этом руководстве объясняется, как создать и интерпретировать корреляционную матрицу в Python.
Как создать матрицу корреляции в Python
Выполните следующие шаги, чтобы создать матрицу корреляции в Python.
Шаг 1. Создайте набор данных
import pandas as pd data = df = pd.DataFrame(data, columns=['assists','rebounds','points']) df # assist rebounds points #0 4 12 22 #1 5 14 24 #2 5 13 26 #3 6 7 26 #4 7 8 29 #5 8 8 32 #6 8 9 20 #7 10 13 14
Шаг 2. Создайте матрицу корреляции
#создать корреляционную матрицу df.corr() assists rebounds points assists 1.000000 -0.244861 -0.329573 rebounds -0.244861 1.000000 -0.522092 points -0.329573 -0.522092 1.000000 #создайте ту же матрицу корреляции с коэффициентами, округленными до 3 знаков после запятой df.corr().round(3) assists rebounds points assists 1.000 -0.245 -0.330 rebounds -0.245 1.000 -0.522 points -0.330 -0.522 1.000
Шаг 3. Интерпретация матрицы корреляции
Все коэффициенты корреляции по диагонали таблицы равны 1, потому что каждая переменная совершенна коррелирует сам с собой.
Все остальные коэффициенты корреляции указывают на корреляцию между различными попарными комбинациями переменных. Например:
- Коэффициент корреляции между передачами и подборами равен -0.245
- Коэффициент корреляции между передачами и очками равен -0.330 .
- Коэффициент корреляции между подборами и очками равен -0.522
Шаг 4. Визуализируйте матрицу корреляции (необязательно)
Вы можете визуализировать матрицу корреляции с помощью параметры стиля доступны в pandas:
corr = df.corr() corr.style.background_gradient(cmap='coolwarm')
Вы также можете изменить аргумент cmap , чтобы создать корреляционную матрицу с разными цветами.
corr = df.corr() corr.style.background_gradient(cmap='RdYlGn')
corr = df.corr() corr.style.background_gradient(cmap='bwr')
Примечание: Полный список аргументов cmap см. в документация по matplotlib.