You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R使用ovun.sample对Paysim数据集过采样出现model.frame.default报错如何解决

R语言ovun.sample过采样报错解决方案

错误原因说明

你遇到的两次看似矛盾的报错,本质是两次输入的数据集都不符合ovun.sample函数(来自ROSE包)的参数要求:

  • 第一次报错是因为你传入的sample_dataset不是标准的data.frame结构,可能存在列表列、嵌套结构或者tibble等特殊数据类型,导致model.frame.default解析失败触发报错
  • 第二次你将数据集强转为矩阵,直接违反了ovun.sample要求输入data参数必须为data.frame的规则,触发第二类报错

正确操作步骤

步骤1:数据集预处理

先对Paysim1数据集做标准化清洗,确保输入的数据结构符合要求:

# 加载依赖包
library(ROSE)

# 读取本地Paysim1数据集
org_dataset <- read.csv("你的本地Paysim1数据集路径.csv")

# 重命名目标列,原数据集欺诈标签为isFraud,匹配你代码里的class变量名
names(org_dataset)[names(org_dataset) == "isFraud"] <- "class"

# 筛选建模用字段,删除姓名、ID类非结构化字段
sample_dataset <- org_dataset[, c("step", "type", "amount", "oldbalanceOrg", "newbalanceOrig", "oldbalanceDest", "newbalanceDest", "class")]

# 过滤缺失值,转为标准data.frame结构,排除tibble等特殊类型的干扰
sample_dataset <- as.data.frame(sample_dataset[complete.cases(sample_dataset), ])

# 分类变量转为因子类型,避免解析异常
sample_dataset$type <- as.factor(sample_dataset$type)
sample_dataset$class <- as.factor(sample_dataset$class)

步骤2:执行过采样

运行过采样代码即可正常得到结果:

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

结果验证

运行以下代码验证过采样效果,正常会输出两类样本占比接近1:1的统计结果:

table(oversample_data$class)

异常排查方案

如果仍然报错,先运行str(sample_dataset)检查数据集结构,确保所有列都是数值、因子或字符类型的原子向量,没有列表、矩阵等复杂类型的列。


内容的提问来源于stack exchange,提问作者WILLIAM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:06:04