R:cv.glmnet的model.matrix从数据框

时间:2017-03-23 19:35:01

标签: r regression glmnet lasso model.matrix

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

0 个答案:

没有答案