繁体   English   中英

glmnet 中的 R 错误:外部函数调用中的 NA/NaN/Inf

[英]R error in glmnet: NA/NaN/Inf in foreign function call

我正在尝试使用 glmnet 创建模型(当前使用 cv 来查找 lambda 值),并且NA/NaN/Inf in foreign function call (arg 5)出现错误NA/NaN/Inf in foreign function call (arg 5) 我相信这与我的数据集中的 NA 值有关,因为当我使用 NA 删除所有数据点时,命令成功运行。

我的印象是 glmnet可以处理 NA 值。 我不确定错误来自哪里:

> res <- cv.glmnet(features.mat, as.factor(tmp[,"outcome"]), family="binomial")
Error in lognet(x, is.sparse, ix, jx, y, weights, offset, alpha, nobs,  : 
  NA/NaN/Inf in foreign function call (arg 5)

数据集如下所示:

> head(features.mat)
6 x 8 sparse Matrix of class "dgCMatrix"
   a b   c  e  f  g  h i
1  1 1 138 NA NA 15 NA .
4  1 3 171 NA NA 17 NA .
7  1 1 156 NA NA  5 NA .
8  1 4  97 NA NA  7 NA .
9  1 1 219 NA NA 11 NA .
10 1 . 263 NA NA 20 NA .
> head(as.factor(tmp[,"outcome"]))
[1] 0 0 0 0 0 0
Levels: 0 1

另外:如果您在数据框中没有 NA 的情况下收到此错误,则您可能没有使用 model.matrix 函数定义输入矩阵。

x <- model.matrix( ~ ., Data)

我知道这不是你问题的答案,但我和你有同样的错误并找到了这个解决方案。 所以它可能对其他人有帮助。

看来 glmnet 无法处理 NA 值!

cv.glmnet 不支持转换为因子的字符数据类型,如上所述,不能处理 NA。 使用 as.numeric 或 as.double。

请注意,如果您包含日期功能,也会发生这种情况。 我没有 NA,但出现此错误。 当我删除日期变量时,一切都很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM