балансировка данных в Python с использованием библиотеки SMOTE - PullRequest
1 голос
/ 28 февраля 2020

Я хочу сбалансировать набор обучающих данных, которые имеют следующие характеристики и разделены на X_train и y_train. Процентное соотношение моих классов примерно следующее:

class A: 54%
class B: 45%
class C: 1%

, поэтому я хочу изменить мои данные следующим образом:

class A: 49%
class B: 41%
class C: 10%

Библиотека, которую я хочу использовать:

https://imbalanced-learn.readthedocs.io/en/stable/generated/imblearn.over_sampling.RandomOverSampler.html

и использование Smote в качестве алгоритма балансировки. Проблема в том, что я не знаю, как это сделать с этой библиотекой. Я знаю алгоритм Smote, но у меня возникли некоторые трудности с этой библиотекой. Любая помощь?

Спасибо

1 Ответ

0 голосов
/ 28 февраля 2020

Вы раньше использовали sklearn? Это очень похоже на то, как это работает. Эффективное использование smote само по себе подобно запуску модели над вашими данными, чтобы сгенерировать больше фиктивных данных, чтобы сбалансировать их.

Этот пример со страницы imblearn хорошо описывает это:

>>> from collections import Counter
>>> from sklearn.datasets import make_classification
>>> from imblearn.over_sampling import SMOTE # doctest: +NORMALIZE_WHITESPACE
>>> X, y = make_classification(n_classes=2, class_sep=2,
... weights=[0.1, 0.9], n_informative=3, n_redundant=1, flip_y=0,
... n_features=20, n_clusters_per_class=1, n_samples=1000, random_state=10)
>>> print('Original dataset shape %s' % Counter(y))
Original dataset shape Counter({1: 900, 0: 100})
>>> sm = SMOTE(random_state=42)
>>> X_res, y_res = sm.fit_resample(X, y)
>>> print('Resampled dataset shape %s' % Counter(y_res))
Resampled dataset shape Counter({0: 900, 1: 900})

В частности, когда у вас есть тренировочные данные X и цель y, вы создаете экземпляр SMOTE () со случайным состоянием, если вы sh. Затем вы помещаете это в свои данные X_res,y_res = sm.fit_resample(X,y). fit_resample() выполняет две работы в одной, он подгоняет алгоритм SMOTE к вашему набору данных, а затем преобразует (повторно измеряет) ваш набор данных с новым набором данных с избыточной выборкой.

...