为Lasso回归准备数据的问题

时间:2016-07-13 13:28:41

标签: r svm bridge glmnet lasso

我正在尝试使用Lasso回归,但我无法在R中很好地定义我的X和Y.

#load data

>test.data<-read.spss("C:\\Users\\Inhib\\OneDrive\\documents\\dummy.sav",use.value.labels=TRUE, to.data.frame=TRUE)
>test.data #testing my data, it's all there so I won't add it here
#take columns 2 to 6 for X
>X<-as.matrix(test.data[,2:6])


# Column 1 is the predicted variable Y


>Y<-as.matrix(test.data[,1])


 #Ok, let's fit it 
fit<- glmnet(x, y, family="gaussian", alpha=0, lambda=0.001)

然后我收到此错误消息:

"Error in glmnet(x, y, family = "gaussian", alpha = 0, lambda = 0.001) : 
  number of observations in y (100) not equal to the number of rows of x   (222)"

现在所有列的长度都相同(222),但错误表明Y中只有100个,X中只有222个。

#So I checked for Y here

>length(Y)
[1] 222
#Then checked for X
> length(X)
[1] 1110

现在,它肯定指向我错过了一些东西。显然矩阵大小不同,X是222 * 5列,但我怎样才能使它工作?意味着这个错误将会消失......我尝试了很多方法。我正在努力工作几个小时,这真的阻止了我的进步,谷歌帮助不大。非常感谢解决方案。

1 个答案:

答案 0 :(得分:0)

我会建议你 1)使用dim(x)dim(y)而不是length来检查矩阵的维度 2)检查y中是否有任何NA值(极有可能)