R中使用ROSE处理不平衡数据集时报变量类型错误如何解决?
问题根因
- 你的数据集包含
nameOrig、nameDest两个唯一标识类的字符字段,这类字段既不属于ROSE支持的连续数值变量,也不属于分类因子变量,是触发报错的核心原因 - 交易类型字段
type当前为字符类型,未转换为分类因子,也不符合ROSE的变量要求 - 你仅转换了目标变量
isFraud为因子,未调整其他不符合要求的字段,因此报错未消失
修复代码
# 1. 移除对欺诈预测无意义的唯一ID字段 dataset_clean <- dataset[, !names(dataset) %in% c("nameOrig", "nameDest")] # 2. 将字符型分类字段type转换为因子 dataset_clean$type <- as.factor(dataset_clean$type) # 3. 目标变量isFraud转因子 dataset_clean$isFraud <- as.factor(dataset_clean$isFraud) # 4. 重新运行ROSE data_ROSE <- ROSE(isFraud~., data = dataset_clean, N = 500, seed = 111)$data
补充说明
- 如果后续还需要保留交易主体标识做后续分析,可以先把这两个字段存到独立变量中,ROSE处理完成后再对应拼接回去即可
- step字段如果是时间步长的分类标识,你也可以根据分析需要决定是否转换为因子,当前是整数型属于连续类,ROSE也可以正常处理
内容的提问来源于stack exchange,提问作者WILLIAM
相关产品推荐
相关产品推荐

