Tôi đang cố gắng sử dụng SMOTE để điều chỉnh sự mất cân bằng trong vấn đề phân loại nhiều lớp của mình. Mặc dù SMOTE hoạt động hoàn hảo trên tập dữ liệu mống mắt theo tài liệu trợ giúp SMOTE, nhưng nó không hoạt động trên một tập dữ liệu tương tự. Đây là dữ liệu của tôi trông như thế nào. Lưu ý rằng nó có ba lớp với các giá trị 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
Nó ở dạng dataframe, giống như iris:
> class(data)
[1] "data.frame"
Đây là mã của tôi khi sử dụng SMOTE và lỗi mà nó gây ra:
> 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
vui lòng thử chuyển đổi cột mục tiêu của bạn (tức là "trạng thái") thành yếu tố và xem xét đánh dấu bài đăng của @ xing bên dưới làm câu trả lời.
—
Xanh lục