Похоже, что одна из ваших независимых переменных является строковой или факторной переменной, и все они должны быть числовыми.Смотрите мой набор данных игрушек ниже.Я получаю ту же ошибку при включении всех переменных;однако, когда я вынимаю var4 (где переменные являются строками), это работает).
Если вы хотите использовать переменную, вы можете преобразовать строковую переменную в коэффициент, а затем преобразовать в коэффициент в числовое значение.переменная (которая будет фиксировать базовые значения фактора).
library(naivebayes)
#data <- read.csv(file.choose(),header = T)
data <- data.frame(admit = sample(100, x=c(F,T), prob=c(.5,.5), replace=T),
var1 = sample(100, x=1:4, replace=T),
var2 = sample(100, x=1:3, replace=T),
var3 = sample(100, x=1:3, replace=T),
var4 = sample(100, x=c("s1", "s2"), replace=T))
str(data)
set.seed(1234)
splitData <- sample(2,nrow(data),replace = T,prob = c(0.8,0.2))
train<-data[splitData == 1,]
test <- data[splitData == 2,]
# Doesn't work
mdl <- naive_bayes(admit ~ .,data = train)
predicted <- predict(mdl, train, type = 'prob')
# Works
mdl <- naive_bayes(admit ~ var1 + var2 + var3,data = train)
predicted <- predict(mdl, train, type = 'prob')
# Convert string to factor then numeric
train$var4 <- as.numeric(as.factor(train$var4))
mdl <- naive_bayes(admit ~ .,data = train)
predicted <- predict(mdl, train, type = 'prob')