Использование функции вставки для индексации данных в пользовательской функции - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь создать пользовательскую функцию в R для длины кода, которая проверяет точность наивного байесовского классификатора. Оригинальный код использует al oop для создания десяти наборов тестовых данных из набора данных Iris и работает нормально. Однако я хочу создать пользовательскую функцию, которая заменяет код Iris c в сценарии, чтобы его можно было использовать более широко.

Исходный код:

library(datasets)    
library(naivebayes)

accuracy <- rep(0,10)

no_obs <- dim(iris)[1] # No. of observations (150)

set.seed(0)

for(i in 1:10){
  test_index <- sample(no_obs, size = as.integer(no_obs*0.2), replace = FALSE) # 20% data records for test
  training_index <- -test_index # 80% data records for training
  NaiveBayesIris <- naive_bayes(Species ~., data = iris[training_index,])
  Pred_class <- predict(NaiveBayesIris, iris[test_index,], type = "class")
  (cont_tab <- table(Pred_class, iris$Species[test_index]))
  (accuracy[i] <- sum(diag(cont_tab))/sum(cont_tab))
}

mean(accuracy)

То, что я хочу закончить, будет похоже на:

naive_bayes_accuracy <- function(){
  accuracy <- rep(0,10)
  no_obs <- dim(iris)[1] # No. of observations (150)
  set.seed(0)
  for(i in 1:10){
    test_index <- sample(no_obs, size = as.integer(no_obs*0.2), replace = FALSE) # 20% data records for test
    training_index <- -test_index # 80% data records for training
    nb <- naive_bayes(Species ~., data = iris[training_index,])
    Pred_class <- predict(nb, iris[test_index,], type = "class")
    (cont_tab <- table(Pred_class, iris$Species[test_index]))
    (accuracy[i] <- sum(diag(cont_tab))/sum(cont_tab))
  }
  mean(accuracy)
}

Проблема, с которой я сталкиваюсь, заключается в разделении аспектов кода "радужная оболочка" и "Виды", которые вводятся пользователю определенная функция. Определенные c части скрипта, вызывающие проблемы:

iris[training_index,]
iris[test_index,]
iris$Species[test_index]

Я надеялся, что простое применение функции вставки выполнит эту работу, но это не так. : (

Исходные логики c, которые я должен был предоставить, был пример:

paste0(iris, [training_index,])

Квадратные скобки, индексирующие данные, оказываются проблемой для функции вставки, и на данный момент у меня есть NFI, что нужно сделать, чтобы отделить элементы кода, чтобы элементы кода могли быть включены во входные данные для функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...