head(t2) X1 X2 -6ren">
gpt4 book ai didi

R glmnet : "(list) object cannot be coerced to type ' double' "

转载 作者:行者123 更新时间:2023-12-03 08:38:10 25 4
gpt4 key购买 nike

我正在尝试使用 glmnet在数据集上打包。我正在使用 cv.glmnet()获取 glmnet() 的 lambda 值.这是数据集和错误消息:

> head(t2)
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12
1 1 1 0.7661266 45 2 0.80298213 9120 13 0 6 0 2
2 2 0 0.9571510 40 0 0.12187620 2600 4 0 0 0 1
3 3 0 0.6581801 38 1 0.08511338 3042 2 1 0 0 0
4 4 0 0.2338098 30 0 0.03604968 3300 5 0 0 0 0
5 5 0 0.9072394 49 1 0.02492570 63588 7 0 1 0 0
6 6 0 0.2131787 74 0 0.37560697 3500 3 0 1 0 1
> str(t2)
'data.frame': 150000 obs. of 12 variables:
$ X1 : int 1 2 3 4 5 6 7 8 9 10 ...
$ X2 : int 1 0 0 0 0 0 0 0 0 0 ...
$ X3 : num 0.766 0.957 0.658 0.234 0.907 ...
$ X4 : int 45 40 38 30 49 74 57 39 27 57 ...
$ X5 : int 2 0 1 0 1 0 0 0 0 0 ...
$ X6 : num 0.803 0.1219 0.0851 0.036 0.0249 ...
$ X7 : int 9120 2600 3042 3300 63588 3500 NA 3500 NA 23684 ...
$ X8 : int 13 4 2 5 7 3 8 8 2 9 ...
$ X9 : int 0 0 1 0 0 0 0 0 0 0 ...
$ X10: int 6 0 0 0 1 1 3 0 0 4 ...
$ X11: int 0 0 0 0 0 0 0 0 0 0 ...
$ X12: int 2 1 0 0 0 1 0 0 NA 2 ...
> cv1 <- cv.glmnet(t2[,-c(1,2,7,12)], t2[,2], family="multinomial")
Error in lognet(x, is.sparse, ix, jx, y, weights, offset, alpha, nobs, :
(list) object cannot be coerced to type 'double'

我排除了第 1、2、7、12 列,因为它们是:id 列、响应列、包含 NA 和包含 NA。任何建议都会很棒。

最佳答案

cv.glmnet需要一个预测变量矩阵,而不是一个数据框。通常您可以通过以下方式获得

X <- model.matrix(<formula>, data=<data>)

但在您的情况下,您可能可以更轻松地到达那里
X <- as.matrix(t2[,-c(1,2,7,12)])

因为您似乎没有任何因素变量或其他可能使事情复杂化的问题。

由于这个答案得到了很多点击: glmnetUtils package为 glmnet 提供了一个基于公式的接口(interface),就像用于大多数 R 建模函数的接口(interface)一样。它包括 glmnet 的方法和 cv.glmnet ,以及新的 cva.glmnet函数对 alpha 和 lambda 进行交叉验证。

以上将成为
cv.glmnet(X2 ~ ., data=t2[-1], family="multinomial")

NA 会自动处理,因此您不必排除具有缺失值的列。

关于R glmnet : "(list) object cannot be coerced to type ' double' ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8457624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com