我遇到了使用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)?