楼主: javen123
955 0

[问答] 求教:关于glmnet()的预测函数问题 [推广有奖]

  • 0关注
  • 0粉丝

大专生

51%

还不是VIP/贵宾

-

威望
0
论坛币
983 个
通用积分
0.0000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
139 点
帖子
6
精华
0
在线时间
104 小时
注册时间
2019-8-1
最后登录
2024-5-4

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
目前对于一个三分类问题,首先使用glmnet训练处了模型fit1,之后使用predict函数,输入fit1和x_test进行预测。得到的分类结果与使用贝叶斯分类公式写的预测函数并不一致,因此想请教一下各位大佬,是不是由于predict函数使用的预测公式和自己编写预测公式的不一样呢?
具体过程和代码如下所示:1.使用glmnet及predict函数进行预测:

fit1=glmnet(x_train,y_train,family="multinomial",type.multinomial = "grouped")
prefit.t<-predict(fit1,newx = x_test,type = "class",s=0)

2.提取theta系数,之后使用自己编写的L.predict函数进行预测:

预测函数公式: 微信截图_20210606122559.png
L.predict<-function(x,theta,theta0,kl){     pred<-vector()
  P<-matrix(NA,nrow=nrow(x),ncol = kl)
  for(t in 1:nrow(x)){
    for (i in 1:kl){
      #先计算出klp,即kl类的概率总和
      klp<-0
      for(k in 1:kl){
        klp<-klp+exp(theta0[k] + as.numeric(crossprod(x[t,],theta[k,])))
      }  
      #第i类概率的取值Pi
      P[t,i]<-exp(theta0+as.numeric(crossprod(x[t,],theta[i,])))/klp

    }
    pred[t]<-which(P[t,] == (max(P[t,])))
  }
  res<-list(P,pred)
  return(res)
}


提取theta值:
theta<-list()
theta0<-vector()
for (i  in 1:3){
  theta[]<-coef(fit1,s=0)[][-1]
  theta0<-coef(fit1,s=0)[][1]
}
theta1<-matrix(cbind(theta[[1]],theta[[2]],theta[[3]]),nrow=3)
pred_y<-L.predict(x_test,theta1,theta0,kl)





二维码

扫码加我 拉你入群

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

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

关键词:glmnet NET MNE Multinomial predict glmnet Prediction R语言 贝叶斯分类

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-24 03:00