SMOTEはマルチクラスの不均衡問題に対してエラーをスローします


9

SMOTEを使用して、マルチクラス分類問題の不均衡を修正しようとしています。SMOTEは、SMOTEヘルプドキュメントのとおり、irisデータセットに対しては完全に機能しますが、同様のデータセットに対しては機能しません。これが私のデータの見え方です。値が1、2、3の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、ラベルが重要である場合にのみ機能するというドキュメントでは言及されていないのは残念です!
2015年

それは私にとってそれでした。因子に変換して修正しました。
緑がかった2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.