Как использовать Random Undersampler с ratio = 'dict' в imblearn?

Я пытаюсь справиться с несбалансированным набором данных, используя imblearn случайная недостаточная выборка. Я хочу вручную указать количество этикеток, которые будут недостаточно отобраны. Вот мой код:

sm = RandomUnderSampler(ratio = {0:142498, 1: 495}, random_state=42)
X_train, y_train = sm.fit_sample(X_tr,encoded_Ytrain)
print(format(Counter(y_train)))

Однако это вызывает ошибку:

Файл «first_approach.py», строка 56, в модуле ‹ > X_train, y_train = sm.fit_sample(X_tr,encoded_Ytrain) поднять ValueError('Неизвестный тип параметра для соотношения.') ValueError: Неизвестный тип параметра для отношения.

Каким должен быть правильный синтаксис для передачи одного и того же?


person Saurav--    schedule 23.06.2017    source источник


Ответы (2)


в зависимости от версии, которую вы используете, вместо «соотношения» вы должны использовать «sampling_strategy», когда используете dict.

person ramobal    schedule 11.04.2020

Попробуйте установить версию 0.3

imblearn 0.2.1 не поддерживает словарь. Вам нужно будет установить его из источника.

pip install -U git+https://github.com/scikit-learn-contrib/imbalanced-learn.git
person shreyy    schedule 15.08.2017