r - SMOTE - 多类

标签 r

鉴于我有一个类不平衡问题,我正在应用 SMOTE(DMwR 包)。但是,我有三个类(class)结果而不是两个。

该函数正确地对少数类进行了过采样,但我没有遵循多数/中间类的行为(即,所有类别都包含不同的样本量)。

让我们说:

library(DMwR)

set.seed(1234)

train = data.frame(group=as.factor(rep(c(1,2,3),c(35,110,220))),
            score=rnorm(365,100))

train_resample <- SMOTE(group ~ ., train, perc.over = 400, perc.under=200)

table(train_resample$group)

#  1   2   3 
# 175  104 176

少数类是有道理的,35+(35*4) = 175。另外,剩下的样本很清楚,140*200/100 = 280。但是,我不确定这个样本是如何分布在剩下的类上的。它保留样本大小顺序,但可能是随机的。

有任何想法吗?

最佳答案

您可以尝试 UBL 包中的 SmoteClassif() 函数。该函数允许您指定要对每个类进行欠采样或过采样的百分比。

关于r - SMOTE - 多类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42690284/

相关文章:

r - 如何使零刻度出现在 R 图中的左角?

r - 使用 2 水平因子变量的条件密度图

r - 将来自不同数据框的列添加到交叉表

r - 如何保存中间对象?

r - dplyr eval 中的错误(expr、envir、enclos): object '.' not found

删除 Shiny 仪表板标题和传单 map 之间的空白

r - ggplot 格式斜体注释

r - purrr::map 返回长数据帧的变体

r - 如何在facet_grid中进行换行?

r - ggplot barplot 根据两个类别的行的最大值进行排序