smotefamily::SMOTE -> get.knnx(数据、查询、k、算法)中的错误:数据非数字

问题描述 投票:0回答:1

我在使用 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
我正在考虑 ~ + 。表明我想要所有预测变量

r smote
1个回答
0
投票

您可以使用此功能检查所有字符和因子列并将其转换为数字。

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)
© www.soinside.com 2019 - 2024. All rights reserved.