Двумерный и многомерный анализ
Диаграммы рассеяния, матрицы диаграмм, тепловые карты корреляций и сгруппированная статистика.
«Двумерный и многомерный анализ» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.
От одной переменной к нескольким
Двумерный анализ изучает связь между двумя переменными, а многомерный анализ рассматривает несколько переменных одновременно.
Цель — найти признаки, изменяющиеся согласованно, выявить взаимодействия и определить, какие переменные предсказывают целевую переменную.
Диаграммы рассеяния с помощью plt.scatter
Диаграмма рассеяния сопоставляет две числовые переменные: каждая точка соответствует одной строке. Она показывает тенденции, кластеры и выбросы.
import matplotlib.pyplot as plt
import seaborn as sns
plt.scatter(df["height"], df["weight"], alpha=0.4)
plt.xlabel("Height")
plt.ylabel("Weight")
plt.show()Как читать диаграмму рассеяния
Обратите внимание на направление (вверх — положительная связь, вниз — отрицательная), тесноту связи (узкая полоса или рассеянное облако) и форму (линейная или изогнутая).
Добавьте параметр hue в sns.scatterplot, чтобы раскрасить точки по категориям и выявить структуру групп.
sns.scatterplot(x="height", y="weight", hue="gender", data=df, alpha=0.5)
plt.show()Корреляция с помощью df.corr()
df.corr() вычисляет попарную корреляцию Пирсона между числовыми столбцами: число от -1 до +1.
- +1 → идеальная положительная линейная связь
- 0 → линейная связь отсутствует
- -1 → идеальная отрицательная линейная связь
corr = df.corr(numeric_only=True)
print(corr["price"].sort_values(ascending=False))Тепловые карты корреляций
Корреляционную матрицу легче читать в виде heatmap. Передайте annot=True, чтобы вывести значения внутри каждой ячейки.
Используйте расходящуюся цветовую палитру (например, coolwarm), чтобы положительные и отрицательные корреляции отображались разными цветами.
corr = df.corr(numeric_only=True)
sns.heatmap(corr, annot=True, fmt=".2f", cmap="coolwarm", center=0)
plt.show()Выявление мультиколлинеарности
Если два признака имеют очень высокую корреляцию (например, > 0,9), они содержат избыточную информацию. Это называется мультиколлинеарностью и может дестабилизировать линейные модели.
На тепловой карте избыточные пары сразу бросаются в глаза, поэтому один из таких признаков можно удалить.
corr = df.corr(numeric_only=True).abs()
high = corr[(corr > 0.9) & (corr < 1.0)]
print(high.dropna(how="all"))Корреляция не означает причинность
Сильная корреляция не означает, что одна переменная является причиной другой. На обе переменные может влиять скрытая третья переменная, либо связь может быть случайной.
Используйте корреляцию для формирования гипотез, а затем проверяйте их с помощью предметных знаний и контролируемого анализа.
Матрицы диаграмм с помощью sns.pairplot
sns.pairplot строит сетку диаграмм рассеяния для каждой пары числовых столбцов, а на диагонали размещает гистограммы или графики KDE.
Это самый быстрый способ одновременно получить общее представление обо всех двумерных связях. В больших наборах данных ограничивайте количество столбцов: размер матрицы растёт пропорционально квадрату их количества.
sns.pairplot(df[["height", "weight", "age", "income"]], hue="gender")
plt.show()Группированные диаграммы размаха
Чтобы связать числовую переменную с категориальной, поместите категорию на ось x диаграммы размаха. Вы сразу сможете сравнить распределения в разных группах.
sns.boxplot(x="city", y="income", data=df)
plt.xticks(rotation=45)
plt.show()Группировка и агрегирование
Числа дополняют диаграммы. groupby вместе с agg обобщает числовой столбец по категориям.
Это многомерный анализ в табличной форме: можно сопоставить средние значения, медианы и количества рядом друг с другом.
summary = df.groupby("city")["income"].agg(["mean", "median", "count"])
print(summary.sort_values("mean", ascending=False))Многомерные диаграммы с визуальными кодировками
С помощью визуальных кодировок можно представить три и более переменных на одной диаграмме: x, y, цвет (hue) и размер.
Так Вы увидите, как меняются связи в зависимости от третьего измерения, не создавая отдельные диаграммы.
sns.scatterplot(x="height", y="weight", hue="age", size="income", data=df)
plt.show()Быстрая проверка: диапазон корреляции
Вы запускаете df.corr() и видите значение -0.85 между двумя признаками.
Повторение: двумерный и многомерный анализ
Теперь Вы умеете исследовать связи между переменными:
plt.scatter/sns.scatterplot— для двух числовых переменныхdf.corr()иsns.heatmap(annot=True)— для корреляционной матрицы- Высокие корреляции указывают на мультиколлинеарность (удалите избыточные признаки)
sns.pairplot— для обзора всех пар переменных- Группированные диаграммы размаха и
groupby().agg()— для анализа связи числовых и категориальных переменных
Далее мы напрямую свяжем признаки с целевой переменной.
Часто задаваемые вопросы
Урок «Двумерный и многомерный анализ» бесплатный?
Да — полный текст урока «Двумерный и многомерный анализ» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.
Чему я научусь в уроке «Двумерный и многомерный анализ»?
Диаграммы рассеяния, матрицы диаграмм, тепловые карты корреляций и сгруппированная статистика. Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn AI with Python?
Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Двумерный и многомерный анализ»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn AI with Python?
Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Рабочий процесс EDA и профилирование данных
- Одномерный анализ
- Двумерный и многомерный анализ
- Анализ распределения признаков и целевой переменной