我在使用 SMOTE 时遇到一些问题,来自
smotefamily
包,我的代码不断收到此错误:
Error in get.knnx(data, query, k, algorithm) : Data non-numeric
我是 R 语言的新手,我正在努力完成以下工作:
dados_treino_bal <- SMOTE(X = dados_treino, target = dados_treino$Inadimplente, K = ~ ., dup_size = 0)
SMOTE(X, target, K = 5, dup_size = 0)
考虑到我的数据集与建议的因素是正确的,并非所有数据都是数字,但这就是它应该是正确的?
对于
K
我正在考虑 ~ + 。表明我想要所有预测变量
您可以使用此功能检查所有字符和因子列并将其转换为数字。
dados_treino[] <- lapply(dados_treino, function(x) {
if (is.character(x)) {
as.numeric(as.character(x)) # Convert character to numeric, NAs will be preserved
} else if (is.factor(x)) {
as.numeric(as.character(x)) # Convert factor to numeric, NAs will be preserved
} else {
x # Keep numeric columns as they are
}
})
另外: SMOTE 函数对 NA 非常敏感,在应用它之前请使用 str() 函数检查您的数据!
再补充一点,您正在使用 X 中的所有dados_treino,您需要从选择中删除类变量。
这是我帮助你的理由。
dados_treino_bal <- SMOTE(dados_treino%>%select(-c(Inadimplente)), target = dados_treino$Inadimplente)