Я пытаюсь создать пользовательскую функцию в 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, что нужно сделать, чтобы отделить элементы кода, чтобы элементы кода могли быть включены во входные данные для функции.