Визуализация корреляционной матрицы с помощью heatmap в Seaborn

Визуализация корреляционной матрицы с использованием тепловой карты (heatmap) в библиотеке Seaborn позволяет понять, как связаны различные переменные в наборе данных. Корреляционная матрица показывает коэффициенты корреляции между переменными, обычно от -1 до 1, где значения ближе к 1 или -1 указывают на сильную положительную или отрицательную корреляцию соответственно.

Пример создания корреляционной матрицы и её визуализация с помощью heatmap в Seaborn

Для начала, давайте создадим пример корреляционной матрицы на основе случайных данных.

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# Генерируем случайный DataFrame
np.random.seed(0)
data = np.random.rand(10, 5)  # 10 образцов, 5 признаков
df = pd.DataFrame(data, columns=['Feature_1', 'Feature_2', 'Feature_3', 'Feature_4', 'Feature_5'])

# Рассчитываем корреляционную матрицу
corr_matrix = df.corr()

# Визуализируем корреляционную матрицу с помощью тепловой карты (heatmap) Seaborn
plt.figure(figsize=(8, 6))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt=".2f", linewidths=0.5)
plt.title('Correlation Matrix Heatmap')
plt.show()

Разбор кода:

  1. Импорт необходимых библиотек:

    • numpy для создания случайных чисел.

    • pandas для работы с данными в формате DataFrame.

    • seaborn и matplotlib.pyplot для визуализации данных.

  2. Генерация случайных данных:

    • Используется np.random.rand для генерации массива случайных чисел с равномерным распределением. В этом примере создаётся массив размером 10x5, который затем преобразуется в DataFrame с 5 столбцами.

  3. Рассчёт корреляционной матрицы:

    • Метод df.corr() из библиотеки pandas используется для вычисления корреляционной матрицы для всех пар столбцов в DataFrame. По умолчанию используется корреляция Пирсона.

  4. Визуализация корреляционной матрицы с помощью heatmap:

    • Функция sns.heatmap() из Seaborn используется для создания тепловой карты:

      • annot=True добавляет числовые значения корреляций на карте.

      • cmap='coolwarm' определяет цветовую палитру (здесь используется палитра от холодных цветов к теплым).

      • fmt=".2f" указывает формат отображения чисел (до двух знаков после запятой).

      • linewidths=0.5 задаёт ширину линий сетки между ячейками тепловой карты.

    • Функция plt.figure(figsize=(8, 6)) устанавливает размер фигуры.

    • plt.show() отображает график.

Дополнительные настройки heatmap:

  • Изменение цветовой палитры:

    • Можно использовать другие встроенные палитры, такие как 'viridis', 'inferno', 'Blues', 'Greens', и т.д., или создавать пользовательские палитры.

  • Маскирование верхнего треугольника корреляционной матрицы:

    • Поскольку корреляционная матрица симметрична, можно визуализировать только нижний (или верхний) треугольник для упрощения.

    mask = np.triu(np.ones_like(corr_matrix, dtype=bool))
    plt.figure(figsize=(8, 6))
    sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt=".2f", linewidths=0.5, mask=mask)
    plt.title('Correlation Matrix Heatmap (Lower Triangle)')
    plt.show()
    • Здесь np.triu() создаёт маску для верхнего треугольника, что позволяет визуализировать только нижнюю часть матрицы.

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

Last updated