Я использую Naive Bayes из библиотеки e1071. У меня есть следующий игрушечный набор данных с именем nb0.csv
Naive Bayes в R, библиотека e1071: адаптированная модель дает вероятности априори как прогнозы для каждой записи
N_INQUIRIES_BIN,TARGET
1,0
2,1
2,0
1,0
1,0
1,0
1,1
Затем я использую следующие строки кода
library(e1071)
data = read.csv('d:/nb0.csv')
model <- naiveBayes(as.factor(data[, 'N_INQUIRIES_BIN']), data[, 'TARGET'])
Когда я типа model
я вижу, что модель была обучена как-то
> model
Naive Bayes Classifier for Discrete Predictors
Call:
naiveBayes.default(x = as.factor(data[, "N_INQUIRIES_BIN"]),
y = data[, "TARGET"])
A-priori probabilities:
data[, "TARGET"]
0 1
0.7142857 0.2857143
Conditional probabilities:
x
data[, "TARGET"] 1 2
0 0.8 0.2
1 0.5 0.5
Однако , когда я делаю прогнозы по данным обучения, я получаю априорные вероятности в качестве прогнозов для всех записей
> predict(model, as.factor(data[, 'N_INQUIRIES_BIN']), type='raw')
0 1
[1,] 0.7142857 0.2857143
[2,] 0.7142857 0.2857143
[3,] 0.7142857 0.2857143
[4,] 0.7142857 0.2857143
[5,] 0.7142857 0.2857143
[6,] 0.7142857 0.2857143
[7,] 0.7142857 0.2857143
Является ли это ошибкой реализации или мне не хватает чего-то очевидного?
P.S. все работает отлично с example
Правильный ответ
Кодекса
library(e1071)
data = read.csv('d:/nb0.csv')
data$N_INQUIRIES_BIN <- as.factor(data$N_INQUIRIES_BIN)
model <- naiveBayes(TARGET ~ ., data)
predict(model, data, type='raw')
приводит именно то, что я хотел
Я думаю, что ваш 'функция naiveBayes' может б неправильно. Обратите внимание, что в связанных примерах всегда есть формула (и ни одна в вашей), а naiveBayes принимает только data.frames или массивы (поэтому 'data [, 'TARGET']' вероятно, не должно работать) – erasmortg
Формула не имеет чтобы быть установленным явно, это видно из примера «iris». В этом же примере показано использование 'iris [, 5]', поэтому 'data [, 'TARGET']' должно работать одинаково. Чтобы быть в безопасности, я проверил, что 'model <- naiveBayes (as.factor (data [, 1]), data [, 2])' приводит к такому же поведению – mskoryk