SMOTE พ่นข้อผิดพลาดสำหรับปัญหาความไม่สมดุลหลายระดับ


10

ฉันกำลังพยายามใช้ SMOTE เพื่อแก้ไขความไม่สมดุลในปัญหาการจำแนกประเภทของฉัน แม้ว่า SMOTE ทำงานได้อย่างสมบูรณ์บนชุดข้อมูล iris ตามเอกสารวิธีใช้ 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 ด้านล่างเป็นคำตอบ
สีเขียว

คำตอบ:


13

ฉันพบปัญหาที่คล้ายกันและฉันแก้ไขได้โดยการโอนค่าคลาส ("สถานะ" ในกรณีของคุณ) เป็นประเภทตัวประกอบ หลังจากใช้งานdata$status=factor(data$status)แล้วให้newDataพิมพ์ดังนี้:

     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

ไม่มีข้อผิดพลาด!


น่าเสียดายที่ไม่ได้กล่าวถึงในSMOTEเอกสารที่ใช้งานได้ก็ต่อเมื่อฉลากเป็นปัจจัย!
ป๊อป

นั่นมันสำหรับฉัน การแปลงเป็นปัจจัยคงที่
สีเขียว
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.