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


29

我正在使用插入符号在数据集上运行交叉验证的随机森林。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引起的?如果是这样,我如何防止这种胁迫?

Answers:


36

您的培训班中必须有一些与'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 

只是要补充-如果该功能实际上是分类的,则仍可以通过将其转换为一个因子来包括它。blah <-as.factor(blah)
P.Windridge

14

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

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

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


2
我没想到要用mutate_if()这个...谢谢!
安德鲁·布雷萨(AndrewBrēza)

3

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.