Вывод формы для тренировки после передискретизации с несбалансированным обучением - PullRequest
1 голос
/ 02 июля 2019

Я использую imbalanced-learn для пересмотра моих данных.Я хочу знать, сколько записей в каждом классе есть после использования метода передискретизации.Этот код прекрасно работает:

import imblearn.over_sampling import SMOTE
from collections import Counter

def oversample(x_values, y_values):
    oversampler = SMOTE(random_state=42, n_jobs=-1)
    x_oversampled, y_oversampled = oversampler.fit_resample(x_values, y_values)
    print("Oversampling training set from {0} to {1} using {2}".format(dict(Counter(y_values)), dict(Counter(y_over_sampled)), oversampling_method))
    return x_oversampled, y_oversampled

Но я переключился на использование конвейера, чтобы я мог использовать GridSearchCV, чтобы найти лучший метод передискретизации (из ADASYN, SMOTE и BorderlineSMOTE).Поэтому я никогда не вызываю fit_resample самостоятельно и теряю вывод, используя что-то вроде этого:

from imblearn.pipeline import Pipeline
from sklearn.preprocessing import MinMaxScaler
from sklearn.ensemble import RandomForestClassifier

pipe = Pipeline([('scaler', MinMaxScaler()), ('sampler', SMOTE(random_state=42, n_jobs=-1)), ('estimator', RandomForestClassifier())])
pipe.fit(x_values, y_values)

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

Есть ли способ получить результат, аналогичный первому примеру, использующий конвейер?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...