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

时间:2020-03-01 01:23:51

标签: r machine-learning logistic-regression prediction

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是一个逻辑回归模型。要获得其预测的概率,我可以打电话(感谢this post的回答):

log(posterior(class_lr, df_test))

第二个模型class_lr_self是带有自学习包装器的逻辑回归模型。有没有办法从class_lr_self输出预测概率?

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

我尝试了以下操作,但是posterior的{​​{1}}方法没有SelfLearning的方法。

LogisticRegression

1 个答案:

答案 0 :(得分:0)

如果您选中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,...))

}

我们只有一个新函数可以返回后验:

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))