SMOTE针对多类不平衡问题引发错误


10

我正在尝试使用SMOTE纠正我的多类分类问题中的不平衡。尽管根据SMOTE帮助文档,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

它采用数据帧的形式,与iris相同:

> 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的帖子标记为答案。
2015年

Answers:


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年

对我来说就是那样。转换为系数固定它。
2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.