2013-11-13 4 views
7

У меня есть набор данных выглядит следующим образом:NaiveBayes в R не может предсказать - фактор (0) Уровни:

data.flu <- data.frame(chills = c(1,1,1,0,0,0,0,1), runnyNose = c(0,1,0,1,0,1,1,1), headache = c("M", "N", "S", "M", "N", "S", "S", "M"), fever = c(1,0,1,1,0,1,0,1), flu = c(0,1,1,1,0,1,0,1)) 
> data.flu 
    chills runnyNose headache fever flu 
1  1   0  M  1 0 
2  1   1  N  0 1 
3  1   0  S  1 1 
4  0   1  M  1 1 
5  0   0  N  0 0 
6  0   1  S  1 1 
7  0   1  S  0 0 
8  1   1  M  1 1 

> str(data.flu) 
'data.frame': 8 obs. of 5 variables: 
$ chills : num 1 1 1 0 0 0 0 1 
$ runnyNose: num 0 1 0 1 0 1 1 1 
$ headache : Factor w/ 3 levels "M","N","S": 1 2 3 1 2 3 3 1 
$ fever : num 1 0 1 1 0 1 0 1 
$ flu  : num 0 1 1 1 0 1 0 1 

Почему predict функция не возвращает мне ничего?

# I can see the model has been successfully created. 
model <- naiveBayes(flu~., data=data.flu) 
# I created a new data 
patient <- data.frame(chills = c(1), runnyNose = c(0), headache = c("M"), fever = c(1)) 
> predict(model, patient) 
factor(0) 
Levels: 
# I tried with the training data, still won't work 
> predict(model, data.flu[,-5]) 
factor(0) 
Levels: 

Я попытался следовать примерам в справочном руководстве в naiveBayes, и это работает для меня. Я не уверен, что не так с моим подходом. Большое спасибо!

Я думаю, что, возможно, что-то не так с типом данных, прежде чем применять модель naivebayes, я попытался изменить все переменные на коэффициент, используя as.factor, и кажется, что работает для меня. Но я все еще смущен, что такое «Как» и «Почему» за сценой.

ответ

21

Проблема не в функции predict(), но и в определении модели.

файл справки из naiveBayes() говорит:

Computes the conditional a-posterior probabilities of a categorical class variable 
given independent predictor variables using the Bayes rule. 

Так у значения должны быть категоричным, но в вашем случае, если они являются числовыми.

Решение должно преобразовать flu в фактор.

model <- naiveBayes(as.factor(flu)~., data=data.flu) 
predict(model, patient) 
[1] 1 
Levels: 0 1 
+0

um, большое спасибо за ваш ответ. Я изучаю naiveBayes прямо сейчас, и модель выравнивается с моим вычислением руки. Мне интересно, как «предсказать» определить y == 1 на самом деле имеет лучшую функцию стоимости? где находится функция затрат и как я могу найти значения функции стоимости для y = 0 и y = 1 в R? –

+0

Извините, но я не смогу ответить на этот вопрос, потому что я так хорошо знаком с naiveBayes –

Смежные вопросы