使用稀疏矩阵和glmnet时出现奇怪的错误
我在训练 glmnet 回归时遇到奇怪的错误。
invalid class "dgCMatrix" object: length(Dimnames[[2]])' must match Dim[2]
它只是偶尔发生,而且可能只在较大的数据集下发生。
我不确定在给定特定数据集的情况下发生的情况是否一致。
有什么线索吗?
I'm getting a weird error when training a glmnet regression.
invalid class "dgCMatrix" object: length(Dimnames[[2]])' must match Dim[2]
It only happens occasionally, and perhaps only under larger datasets.
I'm not sure whether it's consistent it happens given a certain dataset.
Any clues?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在不了解该软件包的详细信息的情况下,John Chambers“Data Analsys 软件”(2008 年,Springer)对调试进行了很好的讨论,例如 via
可能会在这里有所帮助。
Without knowing the particulars of this packages, John Chambers "Software for Data Analsys" (2008, Springer) has a good discussion on debugging, for example via
which may be of help here.
我在使用 family='binomial' 时不断遇到相同的错误。结果我的响应变量中的事件/案例太少了。在 cv.glmnet 中使用 nfold=10 ,如果我的二进制响应 [0,1] 出现的时间少于约 2%,我会收到错误。我建议让您的脚本检查这种情况,并在 true 时使用 glmnet。不过,您不会从选择 lambda 的 x 验证中受益。
I kept getting the same error while using family='binomial'. Turns out I had too few events/cases in my response variable. Using nfold=10 in cv.glmnet, I would get the error if my binary response [0,1] occured less than ~2% of the time. I recommend having your script check for this scenario and use glmnet when true. You won't get the benefit of the x validation for selecting lambda though.
以上需要澄清一下。我在使用 cv.glmnet() 时遇到了这个问题。通过识别那些案例太少的实例,我改用 glmnet() 。您失去了交叉验证的好处(即估计 lambda),但它会编译。
Need to clarify the above. I had this problem when using cv.glmnet(). By identifying those instances where there are too few cases, I used glmnet() instead. You lose the benefit of the cross validation (i.e. estimating lambda), but it will complile.