使用DMwR库中的SMOTE包。加载数据帧后,我尝试按如下方式执行采样:
crime_bal$target <- as.factor(crime_bal$target)
crime_bal <- SMOTE(target ~ .,crime_bal,perc.under = 200, perc.over = 100)
但它总是会出现这个错误:
Error in factor(newCases[, a], levels = 1:nlevels(data[, a]), labels = levels(data[, :
invalid 'labels'; length 0 should be 1 or 2
In addition: Warning messages:
1: NAs introduced by coercion
2: NAs introduced by coercion
我的数据集详情:
> summary(crime_bal)
text url target
Length:6326 Length:6326 0:5994
Class :character Class :character 1: 332
Mode :character Mode :character
为什么我总是以错误结束?
答案 0 :(得分:7)
我遇到过类似的问题,我通过将字符串功能转换为整数类型来解决它。我的猜测它只适用于数字/因子类型的数据。即我将class_1,class_2替换为1,2。
答案 1 :(得分:0)
从错误描述中,看起来代码期望列的数据类型是“字符”类型列的“因子”。在调用SMOTE函数之前,尝试使用as.factor()将字符列转换为因子。
crime_bal$text<-as.factor(crime_bal$text)
crime_bal$url<-as.factor(crime_bal$url)