Эффективные методы идентификации высококоррелированных пар в Pandas с использованием стека и подмножества

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

Методы:

  1. Матрица корреляции.
    Одним из распространенных подходов является вычисление матрицы корреляции DataFrame с использованием функции corrв Pandas. По умолчанию эта функция вычисляет коэффициент корреляции Пирсона между всеми парами числовых столбцов. Затем мы можем отфильтровать матрицу, чтобы извлечь сильно коррелированные пары.
import pandas as pd
# Compute correlation matrix
corr_matrix = df.corr()
# Filter for highly correlated pairs (e.g., correlation > 0.8)
highly_correlated_pairs = corr_matrix[corr_matrix > 0.8].stack().dropna()
  1. Стек и подмножество.
    Другой метод предполагает использование функции stackв Pandas для преобразования DataFrame в серию с иерархическим индексом. Затем мы можем отфильтровать результирующую серию, чтобы извлечь пары с высокой степенью корреляции.
import pandas as pd
# Stack the DataFrame
stacked = df.stack()
# Filter for highly correlated pairs (e.g., correlation > 0.8)
highly_correlated_pairs = stacked[stacked > 0.8]
  1. Пользовательское подмножество.
    Мы можем создать собственное подмножество DataFrame, перебирая столбцы и сравнивая их значения корреляции. Этот метод обеспечивает большую гибкость в определении порога корреляции и позволяет использовать дополнительные условия или вычисления.
import pandas as pd
# Define correlation threshold
threshold = 0.8
# Initialize an empty list to store highly correlated pairs
highly_correlated_pairs = []
# Iterate over column pairs
for i in range(len(df.columns)):
    for j in range(i + 1, len(df.columns)):
        # Calculate correlation
        correlation = df.iloc[:, i].corr(df.iloc[:, j])

        # Check if correlation exceeds the threshold
        if correlation > threshold:
            pair = (df.columns[i], df.columns[j], correlation)
            highly_correlated_pairs.append(pair)

В этой статье мы рассмотрели различные методы идентификации сильно коррелированных пар в кадре данных Pandas. Используя функции corr, stackи создание собственного подмножества, мы можем эффективно извлекать нужные пары. В зависимости от конкретных требований и сложности анализа один метод может оказаться более подходящим, чем другие. Используя эти методы, аналитики данных и специалисты по машинному обучению могут получить ценную информацию и принять обоснованные решения для своих проектов.