R:尽管数据集中没有 NaN,但随机森林在“外部函数调用”错误中抛出 NaN/Inf

机器算法验证 r 随机森林 插入符号
2022-02-04 03:05:48

我正在使用插入符号在数据集上运行交叉验证的随机森林。Y 变量是一个因素。我的数据集中没有 NaN、Inf 或 NA。但是,在运行随机森林时,我得到

Error in randomForest.default(m, y, ...) : 
  NA/NaN/Inf in foreign function call (arg 1)
In addition: There were 28 warnings (use warnings() to see them)
Warning messages:
1: In data.matrix(x) : NAs introduced by coercion
2: In data.matrix(x) : NAs introduced by coercion
3: In data.matrix(x) : NAs introduced by coercion
4: In data.matrix(x) : NAs introduced by coercion

有没有人知道这个错误是否是由强制引入的 NA 引起的?如果是这样,我该如何防止这种胁迫?

3个回答

您的训练集中必须有一些具有类 'char' 的特征。

请检查这个

> a <- c("1", "2",letters[1:5], "3")
> as.numeric(a)
[1]  1  2 NA NA NA NA NA  3
Warning message:
NAs introduced by coercion 

可能原因是您的数据框中有一些字符变量。

在一行中将所有字符变量转换为因子:

library(dplyr) data_fac=data_char %>% mutate_if(is.character, as.factor)

如警告所示,有 28 个错误恰好是字符数据类型(“chr”)的列数。将这些列强制为允许开始运行的因子。