所以我有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)
术语应为.