全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据分析与数据挖掘
3886 6
2013-12-06
在用用glm预测logistic回归时,我把数据分成了训练集和测试集,结果用predict(w,newdata,type="response")做预测时,报错说我的自变量(newdata )有新的层次,请问这该怎么解决?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-12-6 12:33:37
你最好把你的数据截图, 还有完整的程序, 否则有无数的原因可能造成错误
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-12-7 10:30:04
飞起一脚 发表于 2013-12-6 12:33
你最好把你的数据截图, 还有完整的程序, 否则有无数的原因可能造成错误
MR=read.table("C:\\Users\\Administrator\\Desktop\\MR.txt",header=T)
w=glm(Opinion~Age+Income,family="binomial",data=MR)
attributes(w)
w$coefficients
MR=as.matrix(MR)

c=sample(1:120,109)
MR[c,]
T=as.data.frame(MR[c,])#train
w=glm(Opinion~Age+Income,family="binomial",data=T)
T1=as.data.frame(MR[-c,])##test
pre=predict(w,newdata=T1,type="response")
最后出现了Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) :
  factor 'Age' has new level(s) 75
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-12-7 12:43:17
你应该是在数据类型的转换中(使用as.matrix, as.data.frame)等破坏了数据类型 , 因为没有你的数据, 我模拟你的程序写了下面的模拟程序,运行没有问题。如果你按照下面的写法还有问题,可以再提出来

data(iris) #load the sample data iris with Species as the response

iris<-iris[1:100,] #cause we only wanna model binary responses

w=glm(Species~.,family="binomial",data=iris)
attributes(w)
w$coefficients
#MR=as.matrix(MR)

c=sample(1:100,70)

training<-iris[c,]
test<-iris[-c,]
#T=as.data.frame(MR[c,])#train
w=glm(Species~.,family="binomial",data=training)
#T1=as.data.frame(MR[-c,])##test
pre=predict(w,newdata=test,type="response")

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-12-7 12:54:59
在最开始您可以加一句: MR<-data.frame(MR)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-12-15 18:51:36
飞起一脚 发表于 2013-12-7 12:54
在最开始您可以加一句: MR
问题已解决,感谢您的热心帮助
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群