【问题标题】:Making a trained classifier predict only from a set of classes out of the other classes for which it has been trained使经过训练的分类器仅从已训练的其他类别中的一组类别中进行预测
【发布时间】:2017-08-14 19:45:40
【问题描述】:

我有一个训练有素的分类器,可以将看不见的数据分类到四个类别中的任何一个类别。有没有办法限制这个分类器只从所有类中的任意两个分类。

例如, 分类器可以分配给看不见的数据的类:

0, 1, 2, 3

我想将分类器的预测仅限于 0 类和 1 类。因此,每当我将看不见的数据传递给分类器时,它应该将数据分类为 0 类或 1 类。

【问题讨论】:

  • 那么您是否肯定即将到来的数据将始终属于第 0 类或第 1 类。如果数据实际上属于第 2 类或第 3 类,并且您尝试根据概率预测第 1 类或第 0 类怎么办?对这两个类来说都很小,对第 2 类或第 3 类来说会更高(在大多数情况下预测良好)
  • 嗯,这是另一个问题。这很可能会破坏预测。
  • 我无法理解您想要执行此操作的用例。

标签: python machine-learning scikit-learn


【解决方案1】:

没有。分类器不是“可以”分类的东西,而是“确实”分类的东西。如果分类器说 3,则无法要求它提供不同的类方案。如果您希望分类器具有二进制方案,则必须训练该方案。那是一个不同的分类器。

我想到的唯一情况 - 一些多类分类器在引擎盖下有多个二元分类器。但是您通常无法访问此信息。

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

【讨论】:

  • 亲爱的投票者,我可以要求评论我的回答有什么问题吗?
【解决方案2】:

【讨论】:

  • 我正在使用SGDClassifierloss='hinge'。它没有predict_proba 方法。
  • 我不得不投反对票,因为使用剩余的低概率是一个非常糟糕的主意。
【解决方案3】:

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

还有其他方法可以进行硬分类。在这些方法中,您得到的不是概率,而是确定性的结果。在这种情况下,您的输出将类似于[0,0,0,1]

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

如果您使用的是硬分类器,除非您能想出一个类似于概率的指标,否则这是不可能的。

【讨论】:

  • 我正在使用 SGDClassifierloss='hinge'。它不支持predict_proba 方法。但是,我认为我可以使用decision_function 方法来获取置信度分数并使用它来仅考虑我感兴趣的类的值。但是,您不认为预测在这个过程中会出错吗?
  • 我刚刚查看了SGDClassifier的文档页面。它有一个predict_proba 方法。 scikit-learn.org/stable/modules/generated/…
  • 我试过了。当我运行代码时,它抛出了一个错误,AttributeError: Probability estimates are not available for loss='hinge'
  • 我不得不投反对票,因为使用剩余的低概率是一个非常糟糕的主意。
猜你喜欢
  • 2016-01-04
  • 2019-06-19
  • 2016-06-14
  • 2013-04-11
  • 2020-01-15
  • 2018-10-13
  • 2013-01-20
  • 2020-10-10
  • 2017-04-14
相关资源
最近更新 更多