2011-12-10 3 views
20

데이터 세트에서 glmnet 패키지를 사용하려고합니다. glmnet()에 대한 람다 값을 얻으려면 cv.glmnet()을 사용하고 있습니다. 내가 열 1,2,7,12을 제외하고있어R glmnet : "(목록) 객체를 'double'을 입력 할 수 없습니다."

> head(t2) 
    X1 X2  X3 X4 X5   X6 X7 X8 X9 X10 X11 X12 
1 1 1 0.7661266 45 2 0.80298213 9120 13 0 6 0 2 
2 2 0 0.9571510 40 0 0.12187620 2600 4 0 0 0 1 
3 3 0 0.6581801 38 1 0.08511338 3042 2 1 0 0 0 
4 4 0 0.2338098 30 0 0.03604968 3300 5 0 0 0 0 
5 5 0 0.9072394 49 1 0.02492570 63588 7 0 1 0 0 
6 6 0 0.2131787 74 0 0.37560697 3500 3 0 1 0 1 
> str(t2) 
'data.frame': 150000 obs. of 12 variables: 
$ X1 : int 1 2 3 4 5 6 7 8 9 10 ... 
$ X2 : int 1 0 0 0 0 0 0 0 0 0 ... 
$ X3 : num 0.766 0.957 0.658 0.234 0.907 ... 
$ X4 : int 45 40 38 30 49 74 57 39 27 57 ... 
$ X5 : int 2 0 1 0 1 0 0 0 0 0 ... 
$ X6 : num 0.803 0.1219 0.0851 0.036 0.0249 ... 
$ X7 : int 9120 2600 3042 3300 63588 3500 NA 3500 NA 23684 ... 
$ X8 : int 13 4 2 5 7 3 8 8 2 9 ... 
$ X9 : int 0 0 1 0 0 0 0 0 0 0 ... 
$ X10: int 6 0 0 0 1 1 3 0 0 4 ... 
$ X11: int 0 0 0 0 0 0 0 0 0 0 ... 
$ X12: int 2 1 0 0 0 1 0 0 NA 2 ... 
> cv1 <- cv.glmnet(t2[,-c(1,2,7,12)], t2[,2], family="multinomial") 
Error in lognet(x, is.sparse, ix, jx, y, weights, offset, alpha, nobs, : 
    (list) object cannot be coerced to type 'double' 

있는 그대로 :, ID 열 응답 열 NA의를 포함하고, NA의를 포함하는 다음 데이터 세트 및 오류 메시지입니다. 어떤 제안이라도 좋을 것입니다.

답변

39

cv.glmnet은 데이터 프레임이 아닌 예측 변수의 매트릭스를 예상합니다. 당신이 어떤 요인 변수 또는 복잡하게 할 수있는 다른 문제가 표시되지 않기 때문에 일반적으로 당신이

X <- model.matrix(<formula>, data=<data>) 

를 통해 그러나 귀하의 경우에는이를 얻을 수 있습니다, 당신은 아마

X <- as.matrix(t2[,-c(1,2,7,12)]) 

보다 쉽게이 얻을 수 있습니다 문제. 이 응답 이후


안타 충분히 얻는 경우 : glmnetUtils package 그 대부분 R 모델링 기능에 사용 같이 화학식 기반 인터페이스가 제공하는 glmnet. 여기에는 glmnetcv.glmnet에 대한 메소드와 알파 및 람다 모두에 대해 교차 유효성 검사를 수행하는 새로운 cva.glmnet 함수가 포함됩니다.

위의 당신이 누락 된 값으로 열을 제외 할 필요가 없습니다

cv.glmnet(X2 ~ ., data=t2[-1], family="multinomial") 

NA의

가 자동으로 처리 될 것입니다.

+6

as.matrix() 대신 data.matrix()를 사용하는 데주의해야합니다. – screechOwl

+1

@screechOwl :'data.matrix()'를 사용할 필요가 없음을 알았습니다. 모든 변수는 int 또는 num입니다. 왜 다시 확인해 주시겠습니까? – smci