Как сделать универсальный параметр формулы naiveBayes () в R? - PullRequest
0 голосов
/ 07 июня 2019

Когда я использую функцию naiveBayes() библиотеки "e1071", необходимо вставить формулу типа:

myFormula <- myClass~ feature1 + feature2 + feature3

Если я хочу сделать ее универсальной (я нене знаю, сколько объектов имеет относительный набор данных) как я могу это сделать?Я просто знаю, что столбец myClass будет последним, и я хочу учесть все остальные столбцы

1 Ответ

1 голос
/ 07 июня 2019

Вы можете динамически обращаться ко всем другим столбцам с помощью ..

myFormula <- cyl ~ .
naiveBayes(myFormula, data = mtcars)



    Call:
naiveBayes.default(x = X, y = Y, laplace = laplace)

A-priori probabilities:
Y
      4       6       8 
0.34375 0.21875 0.43750 

Conditional probabilities:
   mpg
Y       [,1]     [,2]
  4 26.66364 4.509828
  6 19.74286 1.453567
  8 15.10000 2.560048

   disp
Y       [,1]     [,2]
  4 105.1364 26.87159
  6 183.3143 41.56246
  8 353.1000 67.77132

Если вам нужен класс dymanic, вы можете использовать substitute формулу и eval, чтобы оценить ее в вызове функции naiveBayes.

dynamicNB <- function(data, class) {
  myFormula <- substitute(class ~ .)
  naiveBayes(eval(myFormula), data = data)
}

dynamicNB(class = mpg, data = mtcars)
...