r - 如何修复 "Error in storage.mode(y) <- "双“: invalid to change the storage mode of a factor"in lasso?

标签 r glmnet lasso-regression

使用岭回归和套索回归时出现以下错误。

Error in storage.mode(y) <- "double" : invalid to change the storage mode of a factor

我的数据集如下所示:

> as_data_frame(blca.only)
# A tibble: 315 x 435
   Tags  TCGA.BL.A5ZZ.01 TCGA.XF.AAN1.01 TCGA.DK.A2I4.01 TCGA.XF.A9T4.01
   <fct>           <dbl>           <dbl>           <dbl>           <dbl>
 1 ENSG~           2001.           2170.             0                0 
 2 ENSG~              0               0             64.4              0 
 3 ENSG~          68078.          93147.        108379.           78136.
 4 ENSG~              0               0              0                0 
 5 ENSG~         160562.         176357.        153682.          204135.
 6 ENSG~         217109.         399909.        215158.          253031.
 7 ENSG~              0               0              0                0 
 8 ENSG~           1583.           1236.          1982.            4618.
 9 ENSG~        3535627.        7037139.       2725637.         3036243.
10 ENSG~           1843.           3997.          1282.            1607.
# ... with 305 more rows, and 430 more variables: TCGA.DK.AA6Q.01 <dbl>,
#   TCGA.XF.A8HB.01 <dbl>, TCGA.2F.A9KR.01 <dbl>, TCGA.FD.A3N6.01 <dbl>,
#   TCGA.GV.A3QK.01 <dbl>, TCGA.ZF.A9RE.01 <dbl>, TCGA.FD.A43S.01 <dbl>,
#   TCGA.K4.A5RI.11 <dbl>, TCGA.ZF.AA4U.01 <dbl>, TCGA.GV.A3QF.01 <dbl>,
#   TCGA.UY.A9PE.01 <dbl>, TCGA.FD.A3B4.01 <dbl>, TCGA.GC.A3YS.01 <dbl>,
#   TCGA.G2.A2EF.01 <dbl>, TCGA.BT.A42C.01 <dbl>, TCGA.FD.A62O.01 <dbl>,
#   TCGA.BL.A13J.01 <dbl>, TCGA.E5.A4U1.01 <dbl>, TCGA.E7.A6MD.01 <dbl>,
#   TCGA.CF.A47Y.01 <dbl>, TCGA.5N.A9KI.01 <dbl>, TCGA.DK.A3IT.01 <dbl>,
#   TCGA.DK.AA77.01 <dbl>, TCGA.ZF.AA4R.01 <dbl>, TCGA.GU.A763.01 <dbl>,
#   TCGA.DK.A3IL.01 <dbl>, TCGA.FD.A6TC.01 <dbl>, TCGA.FD.A3SP.01 <dbl>,
#   TCGA.GC.A6I1.01 <dbl>, TCGA.FD.A6TK.01 <dbl>, TCGA.BL.A0C8.01 <dbl>,
#   TCGA.ZF.AA51.01 <dbl>, TCGA.ZF.AA5H.01 <dbl>, TCGA.CF.A9FM.01 <dbl>,
#   TCGA.H4.A2HQ.01 <dbl>, TCGA.DK.AA74.01 <dbl>, TCGA.XF.AAMR.01 <dbl>,
#   TCGA.BT.A20N.01 <dbl>, TCGA.DK.A2HX.01 <dbl>, TCGA.CF.A27C.01 <dbl>,
#   TCGA.DK.AA6M.01 <dbl>, TCGA.XF.A9SH.01 <dbl>, TCGA.CF.A7I0.01 <dbl>,
#   TCGA.KQ.A41P.01 <dbl>, TCGA.CF.A3MG.01 <dbl>, TCGA.CF.A9FF.01 <dbl>,
#   TCGA.FJ.A3ZF.01 <dbl>, TCGA.K4.A6MB.01 <dbl>, TCGA.HQ.A5NE.01 <dbl>,
#   TCGA.XF.A9SV.01 <dbl>, TCGA.FD.A6TB.01 <dbl>, TCGA.H4.A2HO.01 <dbl>,
#   TCGA.ZF.AA4N.01 <dbl>, TCGA.E7.A7XN.01 <dbl>, TCGA.G2.AA3B.01 <dbl>,
#   TCGA.CF.A47T.01 <dbl>, TCGA.K4.A3WU.01 <dbl>, TCGA.GU.A766.01 <dbl>,
#   TCGA.GV.A3JV.01 <dbl>, TCGA.GC.A3WC.11 <dbl>, TCGA.BT.A20R.01 <dbl>,
#   TCGA.DK.A2I6.01 <dbl>, TCGA.ZF.AA53.01 <dbl>, TCGA.ZF.A9R1.01 <dbl>,
#   TCGA.E7.A97P.01 <dbl>, TCGA.C4.A0EZ.01 <dbl>, TCGA.DK.A3X2.01 <dbl>,
#   TCGA.FD.A5BU.01 <dbl>, TCGA.K4.A6FZ.01 <dbl>, TCGA.KQ.A41Q.01 <dbl>,
#   TCGA.CF.A9FH.01 <dbl>, TCGA.BL.A13I.01 <dbl>, TCGA.ZF.A9R4.01 <dbl>,
#   TCGA.DK.A3IU.01 <dbl>, TCGA.CU.A0YN.01 <dbl>, TCGA.2F.A9KT.01 <dbl>,
#   TCGA.XF.A9SL.01 <dbl>, TCGA.DK.AA75.01 <dbl>, TCGA.CF.A9FL.01 <dbl>,
#   TCGA.DK.A6B1.01 <dbl>, TCGA.K4.A3WV.11 <dbl>,
#   TCGA.BL.A13I.01_Rep85 <dbl>, TCGA.GV.A3QH.01 <dbl>,
#   TCGA.XF.A9SM.01 <dbl>, TCGA.ZF.AA5P.01 <dbl>, TCGA.DK.A6B0.01 <dbl>,
#   TCGA.G2.A2ES.01 <dbl>, TCGA.CF.A1HS.01 <dbl>, TCGA.FJ.A3Z7.01 <dbl>,
#   TCGA.HQ.A2OF.01 <dbl>, TCGA.C4.A0F6.01 <dbl>, TCGA.FD.A5C1.01 <dbl>,
#   TCGA.ZF.A9R9.01 <dbl>, TCGA.GU.A42P.01 <dbl>, TCGA.FD.A43U.01 <dbl>,
#   TCGA.S5.A6DX.01 <dbl>, TCGA.GD.A3OP.11 <dbl>, TCGA.K4.A4AC.01 <dbl>,
#   TCGA.GD.A2C5.01 <dbl>, TCGA.4Z.AA84.01 <dbl>, ..

我尝试过:

> lasso.1 <- glmnet(x = as.matrix(blca.only[,-1]), y = factor(blca.only$Tags), alpha = 1)

Error in storage.mode(y) <- "double" : 
  invalid to change the storage mode of a factor
> Y <- factor(blca.only$Tags)
> lasso.1 <- glmnet(x = as.matrix(blca.only[,-1]), y = blca.only$Tags, alpha = 1)
Error in storage.mode(y) <- "double" : 
  invalid to change the storage mode of a factor

> Y <- factor(blca.only$Tags)
> lasso.1 <- glmnet(x = as.matrix(blca.only[,-1]), y = Y, alpha = 1)

Error in storage.mode(y) <- "double" : 
  invalid to change the storage mode of a factor

我的数据类型如下所示:

    > typeof(blca.only)

[1] "list"

我不知道如何解决这个问题。先感谢您!希望您能帮我解决这个问题。

最佳答案

就你的情况而言,我假设你想要逻辑回归。因此,您必须指定 family 参数。试试这个:

lasso.1 <- glmnet(x = as.matrix(blca.only[,-1]), y = factor(blca.only$Tags), alpha = 1,
family = "binomial")

另请参阅this question了解更多详情。

关于r - 如何修复 "Error in storage.mode(y) <- "双“: invalid to change the storage mode of a factor"in lasso?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55576482/

相关文章:

python - Lasso sklearn 中的选项 normalize = True 有什么作用?

r - R 中的平均列对

java - 使用 JRI 赋值时出现奇怪的行为

r - 如何强制cv.glmnet不删除一个特定变量?

r - cv.glmnet 是否通过使用完整的 lambda 序列过度拟合数据?

r - 调整 LASSO 模型并使用 tidymodels 进行预测

r - 使用 r 脚本将 JSON 从 NodeJS 传递到 R

R:如何在集团层面重新采样日内数据?

r - 错误 : (converted from warning) package ‘glmnet’ is not available (for R version 3. 5.3)

r - Lasso 回归中 newx 的格式在 R 中给出错误