R:如何从 RSSL 中的逻辑回归输出预测概率

R: how to output predicted probabilities from logistic regression in RSSL

library(RSSL)
set.seed(1)
df <- generateSlicedCookie(1000,expected=FALSE) %>% 
  add_missinglabels_mar(Class~.,0.98)
df_test <- generateSlicedCookie(1000,expected=FALSE)


class_lr <- LogisticRegression(Class~.,df,lambda = 0.01)
class_lr_self <- SelfLearning(Class~., df, method=LogisticRegression)

这里,class_lr是逻辑回归模型。为了获得它的预测概率,我可以调用(感谢的回答):

log(posterior(class_lr, df_test))

第二个模型,class_lr_self 是一个带有自学习包装器的逻辑回归模型。有没有办法输出 class_lr_self?

的预测概率

运行 predict(class_lr_self, newdata = df_test) 只给我标签。

我尝试了以下方法,但是 SelfLearning 没有 posterior 方法,而 LogisticRegression 有。

> log(posterior(class_lr_self, df_test))
Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘posterior’ for signature ‘"SelfLearning"’

这个class没有方法,如果你勾选it:

setMethod("predict", signature(object="SelfLearning"), function(object,newdata,...) {
  ModelVariables <- PreProcessingPredict(object@modelform,newdata,y=NULL,scaling=object@scaling,intercept=FALSE,classnames=object@classnames)
  X<-ModelVariables$X

  return(predict(object@model,X,...))

}

我们刚刚有了一个新函数,returns后验函数:

func =  function(object,newdata,...) {
  ModelVariables <- PreProcessingPredict(object@modelform,newdata,y=NULL,scaling=object@scaling,intercept=FALSE,classnames=object@classnames)
  X<-ModelVariables$X

  return(posterior(object@model,X,...))
}

而你:

log(func(class_lr_self, df_test))

或者你为此设置后验方法:

setMethod("posterior", signature(object="SelfLearning"), function(object,newdata,...) {
  ModelVariables <- PreProcessingPredict(object@modelform,newdata,y=NULL,scaling=object@scaling,intercept=FALSE,classnames=object@classnames)
  X<-ModelVariables$X

  return(posterior(object@model,X,...))
})

log(posterior(class_lr_self, df_test))