ปัญหาที่กล่าวถึงในคำถามนี้ได้รับการแก้ไขในรุ่น 1.7.3 ของแพ็คเกจ glmnet
ฉันมีปัญหาบางอย่างในการใช้ glmnet กับ family = multinomial และสงสัยว่าได้พบสิ่งที่คล้ายกันหรืออาจบอกฉันได้ว่าฉันทำอะไรผิด
เมื่อฉันใส่ข้อมูลจำลองของฉันเองข้อผิดพลาด "ข้อผิดพลาดในการใช้งาน (nz, 1, ค่ามัธยฐาน): สลัว (X) ต้องมีความยาวเป็นบวก" ได้รับรายงานเมื่อฉันทำงานcv.glmnet
ซึ่งนอกเหนือจากการพูดว่า "มันไม่ทำงาน" ไม่ได้ให้ข้อมูลกับฉันอย่างมหาศาล
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 ความคิดใด ๆ ที่ผู้คน?