SMote ném lỗi cho vấn đề mất cân bằng đa lớp


9

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

Câu trả lời:


13

Tôi đã gặp một vấn đề tương tự và tôi đã giải quyết nó bằng cách chuyển các giá trị lớp ("trạng thái" trong trường hợp của bạn) thành loại yếu tố. Sau khi sử dụng data$status=factor(data$status), newDatain như sau:

     looking risk every status
7          0    0     0      1
2          0    0     0      1
7.1        0    0     0      1
12         0    0     0      1
4          0    0     0      1
12.1       0    0     0      1
11         0    0     0      3
8         NA   NA    NA      3
9         NA   NA    NA      3
10        NA   NA    NA      3
111       NA   NA    NA      3
121       NA   NA    NA      3
13        NA   NA    NA      3

Không có lỗi!


Điều đáng tiếc là nó không được đề cập đến trong SMOTEtài liệu mà nó chỉ hoạt động nếu nhãn là yếu tố!
Pop

Đó là nó cho tôi. chuyển đổi thành yếu tố cố định nó.
Xanh lục
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.