R: передача формулы в функцию в качестве первого ввода - PullRequest
0 голосов
/ 26 февраля 2020
library(RSSL)
set.seed(1)
df <- generateSlicedCookie(1000,expected=FALSE) %>% 
  add_missinglabels_mar(Class~.,0.98)
class_erlr <- EntropyRegularizedLogisticRegression(Class ~., df, lambda=0.01,lambda_entropy = 100)

В функции EntropyRegularizedLogisticRegression из пакета RSSL пример в документации передается в виде формулы Class ~. в качестве входных данных. Я искал исходный код , и это параметры для функции

function (X, y, X_u = NULL, lambda = 0, lambda_entropy = 1, intercept = TRUE, 
          init = NA, scale = FALSE, x_center = FALSE) 

Я пытался вручную определить, что X, y, X_u основано на сгенерированном мной df. Но выполнение следующего дает мне ошибку с оптимизацией:

y <- df$Class
X <- df[, -1]
ids <- which(is.na(y))
X_u <- X[ids, ]
class_erlr_manual <- EntropyRegularizedLogisticRegression(X = X, y = y, X_u = X_u, lambda=0.01,lambda_entropy = 100)

Ошибка гласит:

Error in optim(w, fn = loss_erlr, gr = grad_erlr, X, y, X_u, lambda = lambda,  : 
  initial value in 'vmmin' is not finite

Почему изменение ввода формулы Class ~. в X=X, y =y, X_u = X_u приводит к ошибка? Может кто-нибудь указать мне, где в исходном коде используется формула ввода?

...