Матрица корреляции признаков 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() получаем корреляционную матрицу
wdPlanRevVisitConvLCHPricePlanPct
wd1.000.840.720.84-0.03-0.100.310.13
Plan0.841.000.730.89-0.09-0.070.16-0.02
Rev0.720.731.000.730.230.230.430.64
Visit0.840.890.731.00-0.330.000.160.09
Conv-0.03-0.090.23-0.331.00-0.050.190.48
LCH-0.10-0.070.230.00-0.051.00-0.260.44
Price0.310.160.430.160.19-0.261.000.41
PlanPct0.13-0.020.640.090.480.440.411.00
С помощью функции nympy tril обнуляем значения выше диагонали
df_cor=pd.DataFrame(np.tril(df_cor, k=-1),columns=df_cor.columns,
index=df_cor.columns)
wdPlanRevVisitConvLCHPricePlanPct
wd0.000.000.000.000.000.000.000.0
Plan0.840.000.000.000.000.000.000.0
Rev0.720.730.000.000.000.000.000.0
Visit0.840.890.730.000.000.000.000.0
Conv-0.03-0.090.23-0.330.000.000.000.0
LCH-0.10-0.070.230.00-0.050.000.000.0
Price0.310.160.430.160.19-0.260.000.0
PlanPct0.13-0.020.640.090.480.440.410.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: float64
df_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_0level_1pearson
0Planwd0.84
1Revwd0.72
2RevPlan0.73
3Visitwd0.84
4VisitPlan0.89
5VisitRev0.73
6Convwd-0.03
7ConvPlan-0.09
8ConvRev0.23
9ConvVisit-0.33
10LCHwd-0.10
11LCHPlan-0.07
12LCHRev0.23
13LCHConv-0.05
14Pricewd0.31
15PricePlan0.16
16PriceRev0.43
17PriceVisit0.16
18PriceConv0.19
19PriceLCH-0.26
20PlanPctwd0.13
21PlanPctPlan-0.02
22PlanPctRev0.64
23PlanPctVisit0.09
24PlanPctConv0.48
25PlanPctLCH0.44
26PlanPctPrice0.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_0level_1pearsonp
0Planwd0.840.0000
1Revwd0.720.0000
2RevPlan0.730.0000
3Visitwd0.840.0000
4VisitPlan0.890.0000
5VisitRev0.730.0000
6Convwd-0.030.8848
7ConvPlan-0.090.6231
8ConvRev0.230.2256
9ConvVisit-0.330.0756
10LCHwd-0.100.5979
11LCHPlan-0.070.7181
12LCHRev0.230.2167
13LCHConv-0.050.7775
14Pricewd0.310.0973
15PricePlan0.160.3897
16PriceRev0.430.0175
17PriceVisit0.160.3941
18PriceConv0.190.3096
19PriceLCH-0.260.1587
20PlanPctwd0.130.4793
21PlanPctPlan-0.020.9210
22PlanPctRev0.640.0001
23PlanPctVisit0.090.6522
24PlanPctConv0.480.0068
25PlanPctLCH0.440.0143
26PlanPctPrice0.410.0256
 Убираем значения с p-уровнем значимости больше 0.05
level_0level_1pearsonp
0Planwd0.8430350.0000
1Revwd0.7154710.0000
2RevPlan0.7260030.0000
3Visitwd0.8354150.0000
4VisitPlan0.8905890.0000
5VisitRev0.7329990.0000
11PriceRev0.4306560.0175
15PlanPctRev0.6423990.0001
17PlanPctConv0.4835070.0068
18PlanPctLCH0.4425280.0143
19PlanPctPrice0.4069540.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 независимых непрерывных переменных:

Correlation Matrix DataSet

  • преданность
  • атемп
  • гул
  • скорость ветра

Здесь 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')

Correlation matrix in Python

Вы также можете изменить аргумент cmap , чтобы создать корреляционную матрицу с разными цветами.

corr = df.corr() corr.style.background_gradient(cmap='RdYlGn') 

Correlation matrix with matplotlib in Python

corr = df.corr() corr.style.background_gradient(cmap='bwr')

Correlation matrix using Pandas

Примечание: Полный список аргументов cmap см. в документация по matplotlib.

Источник

Читайте также:  Java sql where null
Оцените статью