Что такое корреляционная матрица и зачем она нужна?
Корреляционная матрица – это таблица, показывающая коэффициенты корреляции между наборами переменных. Она используется для анализа взаимосвязей между признаками в наборе данных. Значения коэффициентов варьируются от -1 до 1, где:
- 1 означает идеальную положительную корреляцию.
- -1 означает идеальную отрицательную корреляцию.
- 0 означает отсутствие корреляции.
Корреляционные матрицы полезны для выявления мультиколлинеарности в данных, выбора наиболее значимых признаков для моделей машинного обучения и понимания общих закономерностей в данных. Например, в интернет-маркетинге можно оценить корреляцию между расходами на рекламу и конверсиями.
Обзор matplotlib.pyplot и его возможностей
matplotlib.pyplot – это модуль в библиотеке Matplotlib, предоставляющий набор функций, работающих аналогично MATLAB. Он позволяет создавать разнообразные типы графиков: линейные графики, столбчатые диаграммы, гистограммы, диаграммы рассеяния и многое другое. Pyplot упрощает процесс визуализации данных, предоставляя интуитивно понятные команды для управления внешним видом графиков.
Почему в matplotlib.pyplot нет встроенной функции для корреляционных матриц (‘corr’)
matplotlib.pyplot – это библиотека для общей визуализации, а не специализированный инструмент для статистического анализа. Вычисление корреляций – это статистическая операция, которая логически относится к другим библиотекам, таким как pandas или numpy. Pandas, например, предоставляет удобный метод .corr() для вычисления корреляционной матрицы непосредственно из DataFrame. Matplotlib используется для отображения полученной матрицы.
Подготовка данных для построения корреляционной матрицы
Импорт необходимых библиотек: pandas, numpy и matplotlib
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from typing import Tuple
Загрузка и предобработка данных (пример с использованием pandas DataFrame)
def load_and_preprocess_data(file_path: str) -> pd.DataFrame:
"""Загружает данные из CSV-файла и выполняет предварительную обработку.
Args:
file_path (str): Путь к CSV-файлу.
Returns:
pd.DataFrame: DataFrame с предобработанными данными.
"""
try:
df = pd.read_csv(file_path)
# Пример: удаление строк с пропущенными значениями
df = df.dropna()
# Пример: преобразование категориальных переменных в числовые (one-hot encoding)
# df = pd.get_dummies(df, columns=['категориальная_колонка'])
return df
except FileNotFoundError:
print(f"Ошибка: Файл не найден по пути {file_path}")
return pd.DataFrame()
# Пример использования:
data = load_and_preprocess_data('data.csv')
Вычисление корреляционной матрицы с использованием pandas
def calculate_correlation_matrix(df: pd.DataFrame) -> pd.DataFrame:
"""Вычисляет корреляционную матрицу для данного DataFrame.
Args:
df (pd.DataFrame): DataFrame для вычисления корреляции.
Returns:
pd.DataFrame: Корреляционная матрица.
"""
try:
correlation_matrix = df.corr()
return correlation_matrix
except Exception as e:
print(f"Ошибка при вычислении корреляции: {e}")
return pd.DataFrame()
# Пример использования:
correlation_matrix = calculate_correlation_matrix(data)
Визуализация корреляционной матрицы с помощью matplotlib.pyplot и subplots
Основные методы построения тепловой карты корреляций
Для визуализации корреляционной матрицы часто используют тепловые карты (heatmap). Matplotlib предоставляет функцию imshow для отображения двумерных массивов данных в виде изображений, где значения представляются цветами.
Использование imshow для отображения корреляционной матрицы
def visualize_correlation_matrix(correlation_matrix: pd.DataFrame) -> None:
"""Визуализирует корреляционную матрицу с помощью matplotlib.
Args:
correlation_matrix (pd.DataFrame): Корреляционная матрица для визуализации.
"""
plt.imshow(correlation_matrix, cmap='coolwarm', interpolation='none')
plt.colorbar()
plt.show()
# Пример использования:
if not correlation_matrix.empty:
visualize_correlation_matrix(correlation_matrix)
Настройка цветовой схемы (cmap) и добавление цветовой шкалы (colorbar)
cmap (colormap) определяет цветовую схему для тепловой карты. colorbar() добавляет шкалу, показывающую соответствие между цветами и значениями корреляции. Популярные цветовые схемы: 'coolwarm', 'viridis', 'plasma', 'magma', 'seismic'.
Добавление аннотаций со значениями корреляций на тепловую карту
def visualize_correlation_matrix_with_annotations(correlation_matrix: pd.DataFrame) -> None:
"""Визуализирует корреляционную матрицу с аннотациями.
Args:
correlation_matrix (pd.DataFrame): Корреляционная матрица для визуализации.
"""
fig, ax = plt.subplots()
im = ax.imshow(correlation_matrix, cmap='coolwarm', interpolation='none')
# Show all ticks and label them with the dataframe's column names.
ax.set_xticks(np.arange(len(correlation_matrix.columns)))
ax.set_yticks(np.arange(len(correlation_matrix.columns)))
ax.set_xticklabels(correlation_matrix.columns)
ax.set_yticklabels(correlation_matrix.columns)
# Rotate the tick labels and set their alignment.
plt.setp(ax.get_xticklabels(), rotation=45, ha="right",
rotation_mode="anchor")
# Loop over data dimensions and create text annotations.
for i in range(len(correlation_matrix.columns)):
for j in range(len(correlation_matrix.columns)):
text = ax.text(j, i, correlation_matrix.iloc[i, j].round(2),
ha="center", va="center", color="w")
ax.set_title("Correlation Matrix")
fig.tight_layout()
plt.colorbar(im)
plt.show()
# Пример использования:
if not correlation_matrix.empty:
visualize_correlation_matrix_with_annotations(correlation_matrix)
Использование subplots для улучшения визуализации
Создание фигуры и нескольких осей (subplots)
plt.subplots() позволяет создать несколько графиков (осей) в одной фигуре. Это полезно для сравнения разных аспектов данных или отображения дополнительных сведений.
Отображение корреляционной матрицы на одной из осей
fig, ax = plt.subplots(figsize=(8, 6))
im = ax.imshow(correlation_matrix, cmap='coolwarm')
Добавление заголовков и меток осей
ax.set_title('Корреляционная матрица')
ax.set_xlabel('Признаки')
ax.set_ylabel('Признаки')
Настройка внешнего вида графиков (шрифты, размеры, цвета)
plt.rcParams['font.size'] = 10
plt.rcParams['axes.titlepad'] = 12
Альтернативные методы и расширенные возможности
Использование библиотеки seaborn для построения корреляционных матриц
Seaborn – это библиотека, основанная на Matplotlib, которая упрощает создание статистических графиков, в том числе тепловых карт корреляций. Она предоставляет более лаконичный синтаксис и улучшенные стили.
import seaborn as sns
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=".2f")
plt.title('Корреляционная матрица (Seaborn)')
plt.show()
Маскировка верхней треугольной части матрицы для улучшения читаемости
Чтобы избежать дублирования информации, можно замаскировать верхнюю треугольную часть корреляционной матрицы. Это особенно полезно для больших матриц, где важна читаемость.
import numpy as np
mask = np.triu(np.ones_like(correlation_matrix, dtype=bool))
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, mask=mask, annot=True, cmap='coolwarm', fmt=".2f")
plt.title('Корреляционная матрица (Seaborn, masked)')
plt.show()
Сохранение визуализации в файл
plt.savefig('correlation_matrix.png')