Вы раньше использовали 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 к вашему набору данных, а затем преобразует (повторно измеряет) ваш набор данных с новым набором данных с избыточной выборкой.