我不明白为什么会出现以下简单的例子:
genre <- c('ROMANCE', 'ROMANCE','ROMANCE', 'ACTION', 'ACTION', 'ACTION')
explosions <- c('NO', 'NO', 'NO', 'YES', 'YES', 'YES')
likeit <- c('DISLIKE', 'DISLIKE', 'DISLIKE', 'LIKE', 'LIKE', 'LIKE')
df <- data.frame(genre, explosions)
df[] <- lapply(df, factor)
df
model <- naiveBayes(df, as.factor(likeit))
model
p_genre <- factor('ACTION')
p_explosions <- factor('YES')
pred <- data.frame(genre=p_genre, explosions=p_explosions)
pred
model
predict(model, pred, type='raw')
具有以下概率:
A-priori probabilities:
as.factor(likeit)
DISLIKE LIKE
0.5 0.5
Conditional probabilities:
genre
as.factor(likeit) ACTION ROMANCE
DISLIKE 0 1
LIKE 1 0
explosions
as.factor(likeit) NO YES
DISLIKE 1 0
LIKE 0 1
> predict(model, pred, type='raw')
DISLIKE LIKE
[1,] 0.5 0.5
对于有爆炸的动作片而言,不会为问题1提供LIKE。
答案 0 :(得分:3)
您的因素处理不当。
如果您这样做,它会按预期工作:
p_genre <- factor('ACTION', c('ACTION','ROMANCE'))
p_explosions <- factor('YES', c('NO', 'YES'))
pred <- data.frame(genre=p_genre, explosions=p_explosions)
predict(model, pred, type='raw')
你得到:
DISLIKE LIKE
[1,] 9.99999e-07 0.999999