R中的predict()glmnet函数出错

时间:2016-02-16 16:09:37

标签: r glmnet

当我使用预测glmnet函数时,我得到了代码下面提到的错误。

mydata <- read.csv("data.csv")
x<- mydata[,1:4]
y<- mydata[,5]
data<-cbind(x,y)
model<-model.matrix(y~., data=data)
ridgedata= model[,-1]
train<- sample(1:dim(ridgedata)[1], round(0.8*dim(ridgedata)[1]))
test<- setdiff(1:dim(ridgedata)[1],train)
x_train <- data[train, ]
y_train <- data$y[train]
x_test <- data[test, ]
y_test <- data$y[test]
k=5
grid =10^ seq (10,-2, length =100)
fit <- cv.glmnet(model,y,k=k,lambda = grid)
lambda_min<-fit$lambda.min
fit_test<-predict(fit, newx=x_test,s=lambda_min)

错误如下:

  

as.matrix(cbind2(1,newx)%%nbeta)出错:评估错误   论证&#39; x&#39;选择功能方法&#39; as.matrix&#39;:错误   在cbind2(1,newx)%%nbeta:尚未实现的方法    %*%

我试过调试,但我不知道

在哪里
  

as.matrix(cbind2(1,newx)%*%nbeta)

正在使用

代码以及导致此错误的原因。

1 个答案:

答案 0 :(得分:6)

您的原始数据框在预测变量中有一个因子(分类)变量。当你使用model.matrix时,它会对这个变量做一些明智的事情;如果您直接将其传递给predict,它就不知道该怎么做。

newX <- model.matrix(~.-y,data=x_test)
fit_test<-predict(fit, newx=newX,s=lambda_min)

顺便说一下,你可以用一个最小/简化的例子复制这个例子,只有几行数据...例如,这个设置给出了同样的错误(我称之为数据{{1}而不是&#34;数据&#34;,因为后者是R中的内置函数:

dd