В настоящее время у меня есть следующее распределение меток
Lbl
0 10451
1 1481
dtype: int64
Как сбалансировать ярлыки? например, выбрав только 1481 из 0?
Данный фрейм данных должен быть
index | 1 | 2 | 3 | ... | Lbl
Спасибо
Обновлено:
Добавление изображения для решения проблемы, обсуждаемой в ответе:
Я получаю вышеуказанный ^^ для этого кода
print(table_train[:5])
table_train = table_train.groupby('Lbl').apply(lambda x : x.sample(1481)).reset_index(level=1, drop=True)
print(table_train[:5])
@WeNYoBen Наверное, в каком-то смысле? Я хочу удалить все значения, кроме 1481 для метки 0
Вы можете попробовать с sample
после groupby
df.groupby('Label').apply(lambda x : x.sample(1481)).reset_index(level=0,drop=True)
Я не уверен, почему, но после запуска этой команды у меня появился еще один индекс с меткой Label. Итак, теперь у меня есть два столбца с одинаковыми именами - метка индекса и метка столбца...
Я пытаюсь позже подсчитать результат с помощью table_train.groupby('Label").size() и получаю ValueError: 'Label' является как уровнем индекса, так и меткой столбца, что неоднозначно.
@YohanRoth, используя reset_index, удаляет дополнительный индекс
выдает ошибку «ValueError: невозможно вставить метку, она уже существует», когда я делаю table_train.reset_index()
@YohanRoth, ты проверил мой метод обновления? вы должны добавить drop=True
Да, я проверял, пробовал. Но он не удаляет индекс ... У меня все еще есть ValueError: «Lbl» - это и уровень индекса, и метка столбца, что неоднозначно.
@YohanRoth reset_index(level=0,drop=True)
изменить уровень = 1 на уровень = 0
так вы хотите понизить дискретизацию?