我试图在数据集上使用glmnet包.我用cv.glmnet()得到glmnet()的λ值.以下是数据集和错误消息:

> 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提供了一个基于公式的接口,就像大多数R建模函数所使用的那样.它包括用于glmnetcv.glmnet的方法,以及用于对alpha和lambda进行交叉验证的新cva.glmnet函数.

上述情况将成为现实

cv.glmnet(X2 ~ ., data=t2[-1], family="multinomial")

NA是自动处理的,因此不必排除缺少值的列.

R相关问答推荐

如何通过r中每20滚动和来创建组将数据视为1:10

手工PCA上的载体与输出双图不匹配

Tidyverse/Djirr为从嵌套列表中提取的列名赋值的解决方案

如何在ggplot 2线性图的每个方面显示每个组的误差条?

根据R中的另一个日期从多列中 Select 最近的日期和相应的结果

根据R中两个变量的两个条件删除带有dspirr的行

使用gggrassure减少地块之间的空间

抖动点与嵌套类别变量箱形图的位置不对齐

用值序列对行进行子集化,并标识序列开始的列

单个轮廓重叠条的单独图例

将数字转换为分钟和秒

使用整齐的计算(curl -curl )和杂音

无法正确设置动态创建的Quarto标注的格式

以字符格式导入的ExcelElectron 表格日期列标题

来自程序包AFEX和amp;的类/函数和NICE_TABLE&冲突

停止ggplot将多行减少到一行

在R中,如何从一系列具有索引名的变量快速创建数据帧?

`-`是否也用于数据帧,有时使用引用调用?

使用列中的值来调用函数调用中应使用的其他列

在r中整理图例和堆叠图的问题