Estoy tratando de usar SMOTE para corregir el desequilibrio en mi problema de clasificación de varias clases. Aunque SMOTE funciona perfectamente en el conjunto de datos de iris según el documento de ayuda de SMOTE, no funciona en un conjunto de datos similar. Así es como se ven mis datos. Tenga en cuenta que tiene tres clases con valores 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
Tiene la forma de un marco de datos, igual que el iris:
> class(data)
[1] "data.frame"
Aquí está mi código usando SMOTE y el error que arroja:
> 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
intente convertir su columna de destino (es decir, "estado") para factorizar y considere marcar la publicación de @ xing a continuación como la respuesta.
—
Verdoso