具有未知预测的scikit分类器

时间:2016-05-10 01:37:06

标签: scikit-learn text-classification naivebayes

我计划使用Python Scikit进行一些文本分类,并计划使用TfidfVectorizer和MultinomialNB。

但我意识到MultinomialNB将始终将我的样本预测为现有(已知)类别。

例如,如果我有:

category A: trained with sample "this is green"
category B: trained with sample "this is blue"
category C: trained with sample "this is red"

我尝试预测:"this is yellow"

它会给我category A(或任何其他,因为在这种情况下所有类别的概率都相同)。

我的问题是:是否有一个分类器会给我"未知" (或者没有,或者错误,或者错误)上面的测试用例?

我想知道我的测试用例何时无法用给定的训练集预测。

我想我可以检查my_classifier.predict_proba(X_test))是否返回一个具有所有相等或接近值的数组(在此示例中为[[ 0.33333333 0.33333333 0.33333333]])。

实际上,我必须检查这些值是否接近其默认值,因为每个类别的概率可能不同:)

所以...任何更好的方法或......是否有一个我可以使用的置信度阈值的分类器?

2 个答案:

答案 0 :(得分:1)

如果您有一些未标记的训练数据,您可以添加包含所有未标记数据的垃圾箱类。在您的示例中,此类将具有解释"而不是绿色,蓝色或红色"中的一种颜色。 http://arxiv.org/abs/1511.03719

中详细介绍了这种方法

答案 1 :(得分:0)

你可以考虑做novelty detection。我会查看该链接和相关的example。在这个例子中,这个想法是使用:

  

单类SVM是一种无监督算法,可以学习新奇检测的决策函数:将新数据分类为与训练集相似或不同。

(重点是我的。)我不知道你的例子中的少量数据会如何表现,我猜错了#34;但我相信{ {3}}就是你在这里寻找的东西。

相关问题