SMOTE çok sınıflı dengesizlik problemi için hata veriyor


10

SMOTE'u çok sınıflı sınıflandırma sorunumdaki dengesizliği düzeltmek için kullanmaya çalışıyorum. SMOTE, SMOTE yardım belgesine göre iris veri kümesinde mükemmel çalışmasına rağmen, benzer bir veri kümesinde çalışmaz. Verilerim şöyle görünüyor. 1, 2, 3 değerlerine sahip üç sınıfı olduğunu unutmayın.

> 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

İris ile aynı veri çerçevesi biçimindedir:

> class(data)
[1] "data.frame"

SMOTE ve benim atılan hata kullanarak benim kod İşte:

> 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

lütfen hedef sütununuzu (yani, "durum") faktöre dönüştürmeyi deneyin ve @ xing'in gönderisini aşağıdaki yanıt olarak işaretlemeyi düşünün.
Yeşilimsi

Yanıtlar:


13

Benzer bir sorunla karşılaştım ve sınıf değerlerini (sizin durumunuzda "durum") faktör türüne aktararak çözdüm. Kullandıktan sonra data$status=factor(data$status), newDataaşağıdaki gibi baskılar:

     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

Hata yok!


Bu, SMOTEyalnızca etiketlerin faktör olması durumunda çalıştığı belgelerinde belirtilmediğine üzücü !
Pop

Benim için buydu. faktöre dönüştürerek sorunu çözdü.
Yeşilimsi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.