When running the glmnet package, everything works fine until I tried to predict with the test set that does not have a response variable. I read all kind of solutions that do not work such as use as.matrix(), use model.matrix() or use data.matrix().
Does anyone knows?
Thanks,
============================== See code below =====================
library(lasso2)
library(glmnet)
require(methods)
set.seed(12345)
# Ridge Regression
#x.tr<-model.matrix(salePrice~OverallQual+Neighborhood+GarageYrBlt+GrLivArea+GarageCars+YearBuilt+GarageArea+ExterQual+KitchenQual+BsmtQual,data=FS.train)[,-8]
y.tr<-FS.train$salePrice
x.tr<-model.matrix(salePrice~., data = FS.train)[,-51]
#x.val<-model.matrix(salePrice~OverallQual+Neighborhood+GarageYrBlt+GrLivArea+GarageCars+YearBuilt+GarageArea+ExterQual+KitchenQual+BsmtQual,data=FS.test)[,-8]
x.val<-model.matrix(salePrice~., data = FS.test)[,-51]
y.val<-FS.test$salePrice
set.seed(12345)
rr.cv<-cv.glmnet(x.tr,y.tr,alpha=0,type.measure = "mse", nfolds = 10)
plot(rr.cv)
rr.bestlam <- rr.cv$lambda.min
rr.goodlam <- rr.cv$lambda.1se
# predict validation set using best lambda and calculate RMSE
rr.fit <- glmnet(x.tr, y.tr, alpha = 0)
plot(rr.fit, xvar = "lambda", label = TRUE)
rr.pred <- predict(rr.fit, s = rr.bestlam, newx = x.val)
sqrt(mean((rr.pred - y.val)^2))
mean(abs(rr.pred - y.val))
# Lasso Regression
set.seed(12345)
# Train model
las.cv <- cv.glmnet(x.tr, y.tr, alpha = 1, type.measure = "mse", nfolds = 10)
plot(las.cv)
# Select best model
las.bestlam <- las.cv$lambda.min
las.goodlam <- las.cv$lambda.1se
# predict validation set using best lambda and calculate RMSE
las.fit <- glmnet(x.tr, y.tr, alpha = 1)
plot(las.fit, xvar = "lambda", label = TRUE)
las.pred <- predict(las.fit, s = las.bestlam, newx = x.val)
sqrt(mean((las.pred - y.val)^2))
mean(abs(las.pred - y.val))
#coef(las.cv,s=las.cv$lambda.1se)
print("Ridge MSE :")
print(mean(abs(rr.pred - y.val)))
print("LASSO MSE :")
print(mean(abs(las.pred - y.val)))
#test.val<-model.matrix(salePrice~OverallQual+Neighborhood+GarageYrBlt+GrLivArea+GarageCars+YearBuilt+GarageArea+ExterQual+KitchenQual+BsmtQual,data=test)
#test.val<-model.matrix(~.,data=test)
dm<-data.matrix(test)
#dm<-as.matrix(test)
############### The following call fails #################
preds <- predict(las.fit, s = las.bestlam, newx = dm)
preds <- predict(las.fit, s = las.bestlam, newx = dm)
Error in cbind2(1, newx) %*% nbeta :
Cholmod error 'X and/or Y have wrong dimensions' at file ../MatrixOps/cholmod_sdmult.c, line 90