Как решить ошибку Слишком мало наблюдений. при использовании ROSE для балансировки данных в R?

Я пытаюсь использовать библиотеку ROSE на R для перебалансировки целевой переменной в моем наборе данных. Вот моя информация о моем наборе данных.

  • В моем исходном наборе данных всего 132056 записей.
  • В целевой переменной всего 279 случаев (0,21%) младшего класса.
  • Всего 131777 случаев (99,79%) основного класса в целевой переменной.

Я хотел бы выполнить недостаточную выборку набора данных, чтобы увеличить процент второстепенного класса до 5%.

Вот мой код:

df_Under <- ovun.sample(Target ~ ., data = df, method = "under", N =5580, seed = 1)

Однако после запуска приведенного выше кода я получил следующее сообщение об ошибке.

"Error in (function (formula, data, method, subset, na.action, N, p = 0.5,  :Too few observations." 

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

Как я могу исправить эту проблему?

С уважением,


person Hattori    schedule 04.07.2018    source источник


Ответы (3)


Я столкнулся с той же проблемой. На самом деле проблема заключалась в наборе данных, в котором были столбцы (переменные) с NA/Nan.

Попробуйте запустить код после удаления NA.

Позвольте мне знать, если это помогает.

person Hardat Nanda    schedule 19.03.2019

Я полагаю, вы хотите, чтобы ваш код использовал p = 0.05 (5%), а не p = 0.5 (50%), как у вас (что является функцией по умолчанию), и over пример, чтобы увеличить размер выборки класса меньшинства, как вы упомянули в своем посте:

df_Under <- ovun.sample(Target ~ ., data = df, method = "over", N =5580, seed = 1, p = 0.05)
person MHammer    schedule 04.07.2018

data.balanced.under ‹- ovun.sample(Target ~ ., data = df, method = "under",p= 0,5)$data

это решит вашу проблему

person maira khan    schedule 19.07.2018