我在使用 cv.glmnet 创建用于运行岭回归和套索回归的解释变量矩阵时遇到问题。
我的原始数据框尺寸为 1460*81,由几个数字和因子变量组成。为了运行 glmnet,我尝试使用model.matrix创建一个预测变量矩阵。
但是,在我的原始数据集上创建 model.matrix 时,一些行被删除并且我的响应变量和预测变量的长度不同。
这是代码:
str(train1)
'data.frame': 1460 obs. of 80 variables:
$ MSSubClass : int 60 20 60 70 60 50 20 60 50 190 ...
$ MSZoning : Factor w/ 5 levels "C (all)","FV",..: 4 4 4 4 4 4 4 4 5 4 ...
$ LotFrontage : num 65 80 68 60 84 85 75 69 51 50 ...
$ LotArea : int 8450 9600 11250 9550 14260 14115 10084 10382 6120 7420
$ Street : Factor w/ 2 levels "Grvl","Pave": 2 2 2 2 2 2 2 2 2 2 ...
$ Alley : Factor w/ 3 levels "Grvl","None",..: 2 2 2 2 2 2 2 2 2 2 ...
$ LotShape : Factor w/ 4 levels "IR1","IR2","IR3",..: 4 4 1 1 1 1 4 1 4 4
$ LandContour : Factor w/ 4 levels "Bnk","HLS","Low",..: 4 4 4 4 4 4 4 4 4 4
$ Utilities : Factor w/ 2 levels "AllPub","NoSeWa": 1 1 1 1 1 1 1 1 1 1 ...
现在我将数据框传递给 model.matrix 以创建一个矩阵。
x = model.matrix(SalePrice ~., data = train1)
dim(x)
dim(x)
[1] 1370 260
请注意,n = 1460 * 80 如何转换为 1370 * 260。当我尝试运行岭回归时,这会导致我的预测变量和响应变量的长度不匹配。
cv.ridge <- glmnet(x, y, alpha = 0)
Error in glmnet(x, y, alpha = 0) :
number of observations in y (1460) not equal to the number of rows of x (1370)
关于在哪里寻找以确保矩阵 (x) 的长度等于 (y) 的任何想法?