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)只会给出标签。
我已经尝试了以下方法,但是没有用于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"’发布于 2020-03-02 06:33:40
如果选中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))https://stackoverflow.com/questions/60471185
复制相似问题