Я намагаюся використовувати SMOTE для виправлення дисбалансу в моїй проблемі класифікації класів. Хоча SMOTE чудово працює на наборі даних райдужної оболонки відповідно до довідкового документа SMOTE, він не працює на подібному наборі даних. Ось як виглядають мої дані Зауважте, у ньому є три класи зі значеннями 1, 2, 3.
> data
looking risk every status
1 0 1 0 1
2 0 0 0 1
3 0 0 0 2
4 0 0 0 1
5 0 0 0 1
6 3 0 0 1
7 0 0 0 1
8 0 0 0 1
9 0 1 0 1
10 0 0 0 1
11 0 0 0 3
12 0 0 0 1
13 0 0 0 1
14 0 0 0 1
15 0 0 0 2
Він у формі фрейму даних, такий же як ірис:
> class(data)
[1] "data.frame"
Ось мій код із використанням SMOTE та помилка, яку він видає:
> newData <- SMOTE(status ~ ., data, perc.over = 600,perc.under=100)
Error in scale.default(T, T[i, ], ranges) : subscript out of bounds
In addition: Warning messages:
1: In FUN(newX[, i], ...) :
no non-missing arguments to max; returning -Inf
2: In FUN(newX[, i], ...) :
no non-missing arguments to max; returning -Inf
3: In FUN(newX[, i], ...) :
no non-missing arguments to max; returning -Inf
4: In FUN(newX[, i], ...) : no non-missing arguments to min; returning Inf
5: In FUN(newX[, i], ...) : no non-missing arguments to min; returning Inf
6: In FUN(newX[, i], ...) : no non-missing arguments to min; returning Inf
будь ласка, спробуйте перетворити цільовий стовпець (тобто "статус") на фактор, і розгляньте як позначення публікації @ xing нижче як відповідь.
—
Зеленуватий