R:插入符号中的 upSample 正在完全删除目标变量

R: upSample in Caret is removing target variable completely

我正在尝试使用 Caret 中的 upSample 函数对 R 中的不平衡数据集进行上采样。但是,在应用该函数后,它会从数据集中完全删除目标变量 C_flag。这是我的代码:

set.seed(100)
'%ni%' <- Negate('%in%')
up_train <- upSample(x = train[, colnames(train) %ni% "C_flag"], #all predictor variables
                     y = train$C_flag) #target variable

这里是训练集中C_flag每个类别的数量。 0 = 100193, 1=29651.

我测试一下是否有 C_flag 结果是这样的:

print(up_train$C_flag)
NULL

有谁知道为什么这个函数要删除这个变量而不是上采样?

我首先想到的是 up_train$C_flag 是否是一个因素。不管怎样,我试过这个样本数据集:

library(tidyverse)
library(caret)
train <- data.frame(x1 = c(2,3,4,2,3,3,3,8),
                      x2 = c(1,2,1,2,4,1,1,4),
                      C_flag = c("A","B","B","A","A","A","A","A"))
train$C_flag <- as.factor(train$C_flag)
'%ni%' <- Negate('%in%')
up_train <- upSample(x = train[,colnames(train) %ni% "C_flag"],
                      y = train$C_flag)
up_train$C_flag

它返回了我 NULL。为什么?,因为目标列已重命名为“Class”。因此,如果您想查看名称为 C_flag 的目标,请添加您想要的 yname 名称:

up_train <- upSample(x = train[,colnames(train) %ni% "C_flag"],
                     y = train$C_flag,
                     yname = "C_flag")
print(up_train$C_flag)

[1] A A A A A A B B B B B B
Levels: A B