R中的朴素贝叶斯:如何将对象分类为新的“未分类”类

时间:2016-05-19 11:04:26

标签: r classification naivebayes

所以我的数据集包含4个类的对象。我正在使用朴素贝叶斯分类器来分类新对象。是否有可能确定新对象是否真的不属于任何类(=以某种方式插入新类“未分类”)?

convert_counts <- function(x) {
x <- ifelse(x > 0, 1, 0)
x <- factor(x, levels = c(0, 1), labels = c("No", "Yes"))
return(x)
}
sntcs_train1 <- apply(sntcs_train1, MARGIN = 2, convert_counts)
sntcs_test1 <- apply(sntcs_test1, MARGIN = 2, convert_counts)
library(e1071)
sntcs_classifier <- naiveBayes(sntcs_train1, sntcs_train$Author)
sntcs_test_pred <- predict(sntcs_classifier, sntcs_test1)

1 个答案:

答案 0 :(得分:0)

技术上有可能。你正在使用的是一个多项式的朴素贝叶斯分类器。数学表达式如下:

                         P(B|A)*P(A)
  P(A|B) =           ____________________

           P(B|A)*P(A) + P(B|C)*P(C) +...+P(B|n)*P(n)

其中A到n是您要分类的不同类,P(B | A)是B发生的概率,假设A已经发生,P(A)是A发生的概率。

如果你想添加第5个“未分类”分类,你必须弄清楚以下两个值:

P(B| unclassified)*P(unclassified)

未分类的可能性只是

1-P(A)-P(B)-P(C)-P(D)

您当前的4个班级。但是,您仍然需要运行必要的分析来确定您的

P(B| unclassified)

一词应该是。