我正在运行以下代码,但不断收到错误消息。代码来自ISLR网站。
library(ISLR)
Hitters=na.omit(Hitters)
x=model.matrix(Salary~.,Hitters)[,-1]
y=Hitters$Salary
library(glmnet)
ridge.mod=glmnet(x,y,alpha=0,lambda=grid)
错误讯息:
Error in lambda < 0 : comparison (3) is possible only for atomic and list types
我真的很感激任何帮助。谢谢!
答案 0 :(得分:0)
你的问题在这里:
ridge.mod=glmnet(x,y,alpha=0,lambda=grid)
grid是R函数的名称(尝试&#39;?grid&#39;),但glmnet期望lambda值的向量。
如果你在没有提供lambda序列的情况下运行glmnet,glmnet库会使用自己的启发式来选择lambda:
ridge.mod=glmnet(x,y,alpha=0)
您也可以提供自己的序列:
ridge.mod=glmnet(x,y,alpha=0, lambda=seq(10, 1000, 1))
但glmnet帮助建议反对它。
lambda用户提供的lambda序列。典型的用法是拥有 程序根据nlambda和。计算自己的lambda序列 lambda.min.ratio。提供lambda值会覆盖此值。警告: 小心使用。避免为lambda提供单个值(for CV使用后预测(而不是)。供应而不是 减少λ值的序列。 glmnet依赖于它的温暖 从速度开始,它通常比整个路径更快 计算单一的契合度。
(请注意,上面的&#39; seq(10,1000,1)&#39;只是一个显示正确语法的示例。)