Как сбалансировать выборку датасета в pandas? 📊🐼

Как сбалансировать выборку датасета в pandas?

Для сбалансирования выборки датасета в pandas можно использовать различные методы. Один из них - это применение метода sample с параметром frac, который позволяет выбрать заданную долю данных из исходного датасета.

# Пример сбалансирования выборки с помощью метода sample()
balanced_dataset = original_dataset.sample(frac=0.5, random_state=42)

В приведенном примере мы использовали метод sample для выбора половины данных из исходного датасета original_dataset. При этом параметр frac был установлен равным 0.5, что соответствует выбору 50% данных.

Таким образом, применяя метод sample с соответствующими параметрами, вы сможете сбалансировать выборку датасета в pandas.

Детальный ответ

Как сбалансировать выборку датасета в pandas

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

1. Понимание несбалансированности выборки

Перед тем, как приступить к решению проблемы несбалансированности выборки, давайте разберемся, что это значит. В несбалансированной выборке наблюдается неравномерное распределение классов. Например, если у нас есть датасет с двумя классами: "класс А" и "класс В", и "класс А" представлен 95% наблюдений, а "класс В" – только 5%, то говорят, что выборка несбалансирована.

2. Подготовка выборки

Для начала давайте подготовим нашу выборку. Предположим, у нас есть датасет с колонками "признак1", "признак2" и "метка_класса". Загрузим датасет в pandas:


import pandas as pd

df = pd.read_csv('dataset.csv')

Прежде чем мы приступим к балансировке выборки, давайте взглянем на распределение классов в нашем датасете. Используя метод value_counts(), мы можем посмотреть, сколько наблюдений у каждого класса:


class_counts = df['метка_класса'].value_counts()
print(class_counts)

Результатом будет вывод количества наблюдений для каждого класса. Если мы видим, что классы распределены неравномерно, то у нас есть несбалансированная выборка.

3. Способы балансировки выборки

Есть несколько способов сбалансировать выборку. Рассмотрим два основных подхода.

3.1. Случайная сбалансированная выборка

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


# Разделить наблюдения по классам
class_A = df[df['метка_класса'] == 'класс А']
class_B = df[df['метка_класса'] == 'класс В']

# Получить случайное количество наблюдений из каждого класса
sample_A = class_A.sample(n=500)
sample_B = class_B.sample(n=500)

# Соединить сбалансированную выборку
balanced_sample = pd.concat([sample_A, sample_B])

print(balanced_sample['метка_класса'].value_counts())

Теперь у нас есть случайная сбалансированная выборка с равным количеством наблюдений для каждого класса.

3.2. Сбалансировка выборки с использованием перерасчета

Второй подход – это сбалансировка выборки с помощью перерасчета (re-sampling). В этом случае мы увеличиваем количество наблюдений для менее представленного класса или уменьшаем количество наблюдений для более представленного класса.


from sklearn.utils import resample

# Разделить наблюдения по классам
class_A = df[df['метка_класса'] == 'класс А']
class_B = df[df['метка_класса'] == 'класс В']

# Увеличить количество наблюдений класса B до размера класса A
class_B_resampled = resample(class_B, replace=True, n_samples=len(class_A), random_state=42)

# Соединить сбалансированную выборку
balanced_sample = pd.concat([class_A, class_B_resampled])

print(balanced_sample['метка_класса'].value_counts())

Теперь у нас есть сбалансированная выборка, в которой количество наблюдений для каждого класса равно.

4. Заключение

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

Видео по теме

Pandas - разбор всех основных возможностей на реальном датасете

Основы Pandas Python | Series, DataFrame И Анализ Данных

Урок 4. Обработка и анализ данных на Python. Объединение датафреймов в Pandas

Похожие статьи:

Как сбалансировать выборку датасета в pandas? 📊🐼

🐼 Как сделать копию pandas? Простой гайд с пошаговыми инструкциями | Легкое руководство по созданию дубликата pandas