【问题标题】:Problem with Over- and Under-Sampling with ROSE in RR中ROSE的过采样和欠采样问题
【发布时间】:2020-03-05 02:36:11
【问题描述】:

我有一个数据集可以在胜诉案件 (14399) 和败诉案件 (8677) 之间进行分类。该数据集有 912 个预测变量。 我正在尝试对败诉案件进行过度抽样,以达到与胜诉案件几乎相同的数量(因此每个胜诉案件和败诉案件都有 14399 个案件)。

TARGET 是输 (0) 和赢 (1) 案例的列:

table(dat_train$TARGET)

    0     1 
 8677 14399 

现在我正在尝试使用 ROSE ovun.sample 来平衡它们

dat_train_bal <- ovun.sample(dat_train$TARGET~., data = dat_train, p=0.5, seed = 1, method = "over")

我收到此错误:

Error in parse(text = x, keep.source = FALSE) : 
  <text>:1:17538: unexpected symbol
1: PPER_409030143+BP_RESPPER_9639064007+BP_RESPPER_7459058285+BP_RESPPER_9339059882+BP_RESPPER_9339058664+BP_RESPPER_5209073603+BP_RESPPER_5209061378+CRM_CURRPH_Initiation+Quotation+CRM_CURRPH_Ne

有人可以帮忙吗? 谢谢:-)

【问题讨论】:

  • 欢迎来到 SO;请花一点时间看看如何正确格式化您的代码和错误消息(这次为您完成)。

标签: r machine-learning oversampling imbalanced-data


【解决方案1】:

从一个假例子中复制你的代码我发现你的公式中有一个错误dat_train$TARGET~.需要更正为TARGET~.

dframe <- tibble::tibble(val = sample(c("a", "b"), size = 100, replace = TRUE, prob = c(.1, .9))
                         , xvar = rnorm(100)
                         )

# Use oversampling
dframe_os <- ROSE::ovun.sample(formula = val ~ ., data = dframe, p=0.5, seed = 1, method = "over")

table(dframe_os$data$val)

【讨论】:

  • 感谢您的回答。但我尝试了你所说的并得到了完全相同的错误:dat_train_bal &lt;- ovun.sample(formula = TARGET~., data = dat_train, method = "over") 我收到了这个错误:Error in parse(text = x, keep.source = FALSE) : &lt;text&gt;:1:17528: unexpected symbol 1: PPER_409030143+BP_RESPPER_9639064007+BP_RESPPER_7459058285+BP_RESPPER_9339059882+BP_RESPPER_9339058664+BP_RESPPER_5209073603+BP_RESPPER_5209061378+CRM_CURRPH_Initiation+Quotation+CRM_CURRPH_Ne
  • 你能用假数据试试上面的方法吗?如果这可行,则问题来自您的数据。因此,您应该首先清理数据集并查找特殊字符。
猜你喜欢
  • 2023-01-29
  • 2019-09-03
  • 1970-01-01
  • 2021-08-20
  • 2022-01-11
  • 2017-10-29
  • 1970-01-01
  • 2018-06-21
  • 2020-02-09
相关资源
最近更新 更多