预测glmnet时出现问题:“对比度只能应用于两个或两个以上级别的因子”

问题描述

我使用R的glmnet软件包训练了一种惩罚回归模型,并使用了一个sparse.model.matrix构造的X,其公式为“〜。*(var1)”,以从我的数据中获取每个项以及与var1的交互作用: / p>

X3 <- sparse.model.matrix(object = ~.*(var1),data = X)[,-1]

cv_lasso  <- cv.glmnet(x = X3,y = Y3,alpha = 1,nfold = 10,family = "binomial",nlambda = 100,lambda.min.ratio=0.001,type.measure="auc",keep = TRUE,parallel = TRUE)

现在,我正在尝试预测几个数据点,但是当将newX转换为model.matrix以便与predict.glmnet()一起使用时,如下所示:

X_pred <- sparse.model.matrix(object = ~.*(var1),data = X_holdout)
predict(object =  cv_lasso,newx = X_pred,s = "lambda.min")

但是出现以下错误:

contrasts<-*tmp*中的错误,值= contr.funs [1 + isOF [nn]]): 对比只能应用于2个或更多级别的因素

我认为这可能是由于X_holdout中的几列基本上是恒定的(这是正确的,因为我现在尝试进行预测,我已经成功地训练了)。

如何避免此问题?我的理解是,由于我使用交互作用训练了模型,因此必须创建一个在预测中具有相同交互作用的模型矩阵。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)