R: model.frame.default(公式 = class ~ 步骤 + 类型 + 数量 + :) 错误:对象不是矩阵

R: Error in model.frame.default(formula = class ~ step + type + amount + :) : object is not a matrix

我是 R 的新手,我正在尝试使用 here 中的数据。我尝试对其进行过采样,但 Error in model.frame.default 发生了。

  1. 初审
oversample_data <- ovun.sample(class ~ ., data = sample_dataset, p = 0.5, seed = 1, method="over")$data

但是

Error in model.frame.default(formula = class ~ step + type + amount + : object is not a matrix

已显示。

  1. 这就是为什么我想出二次试验,先把数据集变成矩阵,然后再做过采样
org_dataset <- as.matrix(org_dataset[complete.cases(org_dataset), ])

data_balanced_over <- ovun.sample(class ~ ., data = org_dataset, p = 0.5, seed = 1, method = "over")$data

但是它说

Error in model.frame.default(formula = class ~ step + type + amount + : 'data' must be a data.frame, not a matrix or an array

这让我很困惑...过采样的正确方法是什么?

问题是您为 ovun.sample 设置的公式。您所指的数据集中没有名为 class 的变量。 公式的 documentation of the ROSE package 表示

The left- hand-side (response) should be a vector specifying the class labels. The right- hand-side should be a series of vectors with the predictors.

因此,您必须指定一个包含 class 标签的变量。鉴于数据集,我假设这将是 isFraud。那么调用将是

oversample_data <- ovun.sample(isFraud ~ ., data = sample_dataset, p = 0.5, seed = 1, method="over")$data