Использование imblearn для передискретизации данных нескольких классов

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

import numpy as np
from imblearn.over_sampling import RandomOverSampler

data = np.random.randn(30,5)
label = np.random.randint(3, size=30)

ros = RandomOverSampler(random_state=3)
data_res, label_res = ada.fit_sample(data, label)

После запуска он возвращает это предупреждение:

UserWarning: целевой тип должен быть двоичным. warnings.warn ('Целевой тип должен быть двоичным.')

Но в документации говорится:

Примечания

Поддерживает передискретизацию нескольких классов.

Мне что-то не хватает, чтобы использовать его для многоклассового случая? Если это только для двоичного класса, существует ли какая-либо другая библиотека или модуль, поддерживающий многоклассовую передискретизацию?


person starrr    schedule 06.08.2017    source источник


Ответы (3)



Вчера я столкнулся с такой же ситуацией,
и я использовал conda для установки библиотеки,
Я нашел файл -> base.py
он отличался от последней версии на github.

поэтому я git клонирую последнюю версию с помощью github
https://github.com/scikit-learn-contrib/imbalanced-learn

а потом,
все в порядке!
вы можете хорошо использовать мультиклассы

person 林詠翔    schedule 06.08.2017

Вам необходимо обновить imblearn, используя:

pip install -U imbalanced-learn

person Bani    schedule 28.04.2018

RandomOverSampler () очень хорошо работает для меня с проблемой нескольких классов с 9 метками, которые я вижу в вашем коде, что вы используете ada oversampler вместо ros, который вы определили.

person BELMALLEM Marouane    schedule 01.06.2021