全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1216 0
2021-06-06
目前对于一个三分类问题,首先使用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)





二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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