【问题标题】:How do classifiers classify?分类器是如何分类的?
【发布时间】:2019-08-29 02:29:35
【问题描述】:

在训练任何分类器之后,分类器告诉数据点属于一个类的概率。

y_pred = clf.predict_proba(test_point)

分类器是预测具有最大概率的类,还是将概率视为根据分布绘制的分布?

换句话说,假设输出概率是-

C1 - 0.1      C2 - 0.2      C3 - 0.7

输出总是 C3 还是只有 70% 的时间?

【问题讨论】:

  • 很难回答这个问题,因为每个分类器的工作方式都不同(有些没有 predict_proba 方法),但一般来说,您的分类器将始终回答 C3。然而它警告你,在你的训练中,类的分布在样本的周围是这样的(封闭空间)。但是周围真的没有很好的定义,再次取决于分类器

标签: machine-learning scikit-learn deep-learning classification


【解决方案1】:

当 clf predict 时,它不会计算每个类的可能性。它将使用完整连接获取类似 [itemsnum ,classisnum] 的数组,然后您可以使用 max output[1] 获取项目类 顺便说一句,当 clf 训练时,它使用 softmax 来获得每个类的可能性,这样可以更顺利地进行优化,如果您对训练过程感兴趣,可以找到一些关于 softmax 的文档

【讨论】:

    【解决方案2】:

    如何从类别概率分数到类别通常称为“决策函数”,通常被认为与分类器本身分开。在 scikit-learn 中,许多估计器都有一个默认决策函数,可通过 predict() 访问,用于多类问题,这通常只返回最大值(argmax 函数)。

    但是,这可以根据需要以各种方式扩展。例如,如果某一类的一个预测的效果非常昂贵,那么可能会降低这些概率的权重(类权重)。或者可以有一个决策函数,如果置信度高,则只给出一个类作为输出,否则返回错误或后备类。

    一个也可以有多标签分类,输出不是一个单一的类,而是一个类的列表。 [ 0.6, 0.1, 0.7, 0.2 ] -> (class0, class2) 然后这些可以使用公共阈值或每类阈值。这在标记问题中很常见。

    但在几乎所有情况下,决策函数都是确定性函数,而不是概率函数。

    【讨论】:

      猜你喜欢
      • 2011-11-30
      • 2016-04-29
      • 1970-01-01
      • 2012-04-02
      • 2021-01-11
      • 1970-01-01
      • 2012-08-19
      • 2013-02-22
      相关资源
      最近更新 更多