R 中的朴素贝叶斯:如何将对象分类为新的"Unclassified"类



所以我有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)

从技术上讲,这是可能的。你使用的是一个多项式朴素贝叶斯分类器。数学可以表示如下:

                         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)是给定A已经发生的情况下B发生的概率,p(A)是A发生的概率。

如果你想添加一些第五个"未分类"分类,你必须计算出以下两个值:

P(B| unclassified)*P(unclassified)

A未分类的概率只是

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

对于您当前的4个课程中的每一个。然而,你仍然需要进行必要的分析,以找出你的

P(B| unclassified)

术语应为.

最新更新