0

我正在运行 SMOTE 功能,如下所示:

# install.packages("DMwR") for SMOTE implementation 

library(DMwR) smoted_data <- SMOTE(state~., deliq, perc.over=200, perc.under = 1600)

但我得到以下错误:

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 message: In smote.exs(data[minExs, ], ncol(data), perc.over, k) : NAs introduced by coercion

我检查了所有因子变量,它们都没有在任何级别包含 0。

数据中也没有可用的 NA,我检查了 stackoverflow 中的所有相关帖子,但没有得到与我的案例相关的任何内容。

这可能是什么原因?

4

2 回答 2

1

我发现的解决方法是执行以下操作(仅保留预测变量和目标变量)。

x <- your independent variables

  fmla <- as.formula(paste("state ~ ", paste(x, collapse= "+")))

smoted_data <- SMOTE(fmla, subset(deliq, select = c("state",x)), perc.over=200,perc.under = 1600)
于 2020-02-25T22:27:41.017 回答
0

检查这些因子变量是否真正采用因子格式而不是字符。这样做检查: str(mydata) 如果它们中的任何一个是字符,则使用以下命令将它们放回因子格式: as.factor(myvariable)

于 2020-06-06T12:38:49.563 回答