0

我在使用 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) 的任何想法?

4

0 回答 0