2017-08-14 82 views
-2

我有一个经过训练的分类器,它可以将看不见的数据分类到四个类中的任何一个。有没有办法限制这个分类器只能从任何两个类中分类。制作一个经过训练的分类器只能从其它训练集中的一组训练集中预测出来

实施例, 类的分类器可以分配到看不见数据:

0, 1, 2, 3 

我想分类的预测限制为0类和1只。所以,每当我将未见的数据传递给分类器时,它应该将数据分类为0类或1类。

+0

因此,你是否肯定即将到来的数据将始终属于0级或1级?如果数据实际属于2级或3级,并且您尝试根据概率预测1级或0级,会怎么样?对于这两个类都很小,对于第2或第3类来说要高一些(在大多数情况下预测良好) –

+0

嗯,这是另一个问题。这很可能会破坏预测。 –

+0

我无法理解您希望执行此操作的用例。 –

回答

-1

是的,这是可能的。分类时,在某些方法中,您可以获得每个班级的概率。因此,如果您有四个班级,则输出将为[0.1,0.2,0.3,0.4],总和为1。这被称为软分类。您分配具有最大概率的班级。

还有其他方法做硬分类。在这些方法中,您不会得到概率,但会得到确定性的结果。在这种情况下,您的输出将看起来像[0,0,0,1]

您的问题的答案取决于您正在使用哪种分类方法。如果你使用软分类,你可以根据你得到的概率进行分类。忽略最后两类的概率,只使用前两个概率。

如果您使用的是硬分类器,除非您能够提出类似于概率的度量标准,否则这是不可能的。

+0

我使用'SGDClassifier'和'loss ='hinge''。它不支持'predict_proba'方法。然而,我认为我可以使用'decision_function'方法来获得置信度分数,并只用它来考虑我感兴趣的类的值。但是,您不认为这个过程中的预测会出错吗? –

+0

我刚刚检查过'SGDClassifier'的文档页面。它有一个'predict_proba'方法。 http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.SGDClassifier.html#sklearn.linear_model.SGDClassifier.predict_proba –

+0

我试过了。当我运行代码时,它抛出了一个错误,“AttributeError:概率估计不适用于loss ='hinge''。 –

0

不是。分类器并不是什么“可以”分类,而是“分类”。如果分类器说3,就没有办法要求它用于不同的分类方案。如果您希望分类器具有二进制方案,则必须对其进行培训。那是一个不同的分类器。

我唯一想到的情况是 - 一些多类分类器有多个二元分类器。但是你通常无法获取这些信息。

如果您有额外的知识,您可以做的是否决分类器。如果你知道第2类和第3类不在你的测试集中,你可以使用你的可能性知识将它们转换为0或1.如果最可能的类是2,我明确劝阻你使用概率来选择0级或1级或3.

+0

亲爱的downvoter,我可以要求评论我的回答有什么问题吗? – stefan