2014-02-16 49 views
3

我想通過在R的GLMNET軟件包中使用嶺迴歸來預測基於多個變量的汽車MPG。我已經將數據分離爲訓練和測試數據,並對分類變量進行虛擬編碼。在R的GLMNET軟件包中預測擬合模型的麻煩

我適合交叉驗證模型如下:

require("glmnet") 

x <- as.matrix(data.frame(cylinderDummy[,2:ncol(cylinderDummy)], trainData$displacement, 
      trainData$horsepower, trainData$weight, trainData$acceleration, 
      originDummy[,2:ncol(originDummy)])) 
y <- trainData$mpg 
cv.fit <- cv.glmnet(x, y, alpha = 1, nfolds=5,type.measure="mse") 

這一切都很好。然而,當我嘗試使用「預測()」函數的擬合模型的測試數據出現問題:

prediction <- predict(cv.fit, testData$mpg, s="lambda.1se") 

我收到以下錯誤:

Error in as.matrix(cbind2(1, newx) %*% nbeta) : 
error in evaluating the argument 'x' in selecting a method for function 'as.matrix': Error in t(.Call(Csparse_dense_crossprod, y, t(x))) : 
error in evaluating the argument 'x' in selecting a method for function 't': Error: Cholmod error 'X and/or Y have wrong dimensions' at file ../MatrixOps/cholmod_sdmult.c, line 90 

誰能告訴我我做錯了什麼?謝謝!

回答

3
prediction <- predict(cv.fit, testData$mpg, s="lambda.1se") 

似乎testData $ mpg是一個向量,模型應該使用整個testdata集來預測而不是單個mpg值。

在你的情況下,它應該像

testdata <- as.matrix(data.frame(cylinderDummy[,2:ncol(cylinderDummy)], testData$displacement, 
     testData$horsepower, testData$weight, testData$acceleration, 
     originDummy[,2:ncol(originDummy)])) 
prediction <- predict(cv.fit, testData, s="lambda.1se")