我正試圖學習glmnet的懲罰邏輯迴歸方法。我試圖預測一個來自mtcars示例數據的汽車是否會有自動變速箱或手動變速箱。我想,我的代碼是非常簡單的,但我似乎得到一個錯誤:glmnet training在x,y數據框參數上拋出錯誤:我用錯了嗎?
這第一塊簡單地分割mtcars到動車組的80%和20%的測試設置
library(glmnet)
attach(mtcars)
smp_size <- floor(0.8 * nrow(mtcars))
set.seed(123)
train_ind <- sample(seq_len(nrow(mtcars)), size=smp_size)
train <- mtcars[train_ind,]
test <- mtcars[-train_ind,]
我知道X數據被認爲是在沒有響應的矩陣形式,所以在兩個訓練集合試圖訓練模型時分離成一個非響應矩陣(train_x)和響應向量(train_y)
train_x <- train[,!(names(train) %in% c("am"))]
train_y <- train$am
但,
p1 <- glmnet(train_x, train_y)
我得到的錯誤:
Error in elnet(x, is.sparse, ix, jx, y, weights, offset, type.gaussian,
:(list) object cannot be coerced to type 'double'
我這麼想嗎?
不要' attach'。這是一個壞習慣,可能會讓你陷入困境,而且你甚至沒有在你分享的代碼中使用它! – Gregor
所以....我不確定你認爲你已經做了什麼來將你的協變量轉換爲矩陣。矩陣是不同的數據結構。你只能通過數據框的子集來獲得一個。 – joran
你看過'cv.glmnet'嗎?它會自動進行k-fold CV。 – Vlo