R: как вывести прогнозируемые вероятности из регрессии logisti c в RSSL - PullRequest
1 голос
/ 01 марта 2020
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 - регрессионная модель логистики c. Чтобы получить прогнозируемые вероятности, я могу позвонить (благодаря ответу в этом сообщении ):

log(posterior(class_lr, df_test))

Вторая модель, class_lr_self, представляет собой логистическую c регрессионную модель с самообучающаяся оболочка. Есть ли способ вывести прогнозные вероятности из 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"’

1 Ответ

0 голосов
/ 02 марта 2020

Для этого класса нет метода, если вы проверите 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...