이 질문에서 언급 된 문제는 R 패키지 glmnet 버전 1.7.3에서 수정되었습니다.
가족 = 다항식으로 glmnet을 실행하는 데 문제가 있으며 비슷한 문제가 발생하거나 내가 뭘 잘못하고 있는지 말할 수 있습니다.
내 자신의 더미 데이터를 넣을 때 cv.glmnet
"작동하지 않았다"라는 말과 달리 실행할 때 "적용 오류 (nz, 1, median) : dim (X)는 양의 길이를 가져야합니다"라는 오류가보고됩니다. 나에게 큰 정보가 아니었다.
y=rep(1:3,20) #=> 60 element vector
set.seed(1011)
x=matrix(y+rnorm(20*3*10,sd=0.4),nrow=60) # 60*10 element matrix
glm = glmnet(x,y,family="multinomial") #=> returns without error
crossval = cv.glmnet(x,y,family="multinomial") #=> Error in apply(nz, 1, median) : dim(X) must have a positive length
crossval = cv.glmnet(x,y,family="multinomial",type.measure="class") #=> Error in apply(nz, 1, median) : dim(X) must have a positive length
crossval = cv.glmnet(x,y,family="multinomial",type.measure="mae") #=> Error in apply(nz, 1, median) : dim(X) must have a positive length
cvglm = cv.glmnet(x,y,family="multinomial",lambda=2) #=> Error in apply(nz, 1, median) : dim(X) must have a positive length
도움이된다면 glmnet을 해결하려고 시도한 문제에 대한 시각적 설명이 있습니다.
my_colours = c('red','green','blue')
plot(x[,1],x[,2],col=my_colours[y])
패키지 문서에서 예제 코드를 실행할 수 있으므로 뭔가 잘못 이해했거나 glmnet에 버그가 있다고 의심됩니다.
library(glmnet)
set.seed(10101)
n=1000;p=30
x=matrix(rnorm(n*p),n,p) #=> 1000*30 element matrix
beta3=matrix(rnorm(30),10,3)
beta3=rbind(beta3,matrix(0,p-10,3))
f3=x%*% beta3
p3=exp(f3)
p3=p3/apply(p3,1,sum)
g3=rmult(p3) #=> 1000 element vector
set.seed(10101)
cvfit=cv.glmnet(x,g3,family="multinomial")
이것은 R 버전 2.13.1 (2011-07-08) 및 glmnet 1.7.1을 사용하고 있지만 R 2.14.1에서 동일한 문제를 생성 할 수 있습니다. 어떤 아이디어 사람들?