【问题标题】:scikit-learn return value of LogisticRegression.predict_probaLogisticRegression.predict_proba 的 scikit-learn 返回值
【发布时间】:2016-08-09 10:49:58
【问题描述】:

LogisticRegression.predict_proba 函数究竟返回了什么?

在我的示例中,我得到如下结果:

[[  4.65761066e-03   9.95342389e-01]
 [  9.75851270e-01   2.41487300e-02]
 [  9.99983374e-01   1.66258341e-05]]

从其他计算中,我知道,使用 sigmoid 函数,第二列是概率。 documentation 说,第一列是n_samples,但那不可能,因为我的样本是评论,是文本而不是数字。文档还说,第二列是n_classes。这当然不可能,因为我只有两个类(即+1-1),并且该函数应该是关于计算样本真正属于一个类的概率,而不是类本身。

第一列到底是什么,为什么会出现?

【问题讨论】:

    标签: python machine-learning scikit-learn probability logistic-regression


    【解决方案1】:
    4.65761066e-03 + 9.95342389e-01 = 1
    9.75851270e-01 + 2.41487300e-02 = 1
    9.99983374e-01 + 1.66258341e-05 = 1
    

    第一列是条目具有-1 标签的概率,第二列是条目具有+1 标签的概率。请注意,类是按照 self.classes_ 中的顺序排列的。

    如果您只想获得正标签的预测概率,您可以使用logistic_model.predict_proba(data)[:,1]。这将为您生成 [9.95342389e-01, 2.41487300e-02, 1.66258341e-05] 结果。

    【讨论】:

    • 我完全没看到!感谢您的快速澄清。我现在比以前更想知道文档在谈论什么。
    • 文档说明如下:返回模型中每个类的样本概率。 @Zelphir:您在文档中看到:[n_samples,n_classes]。这是指输出:它将返回一个矩阵,其中行是样本,列是类 (-1, 1)。正如 Iulian 所说:您将为每一行获得一个类别为 -1 的概率预测和一个类别为 1 的概率。
    • 我们如何检查课程的顺序?我的意思是你怎么知道第一列是-1类的概率?
    • 有没有办法从类别的概率中确定样本的概率分数?
    • @Reihan_amn 如果您阅读 pydoc,或者如果您查看 predict_proba() 的源代码,您可以阅读:Returns p : array of shape (n_samples, n_classes) [..] The class probabilities of the input samples. The order of the classes corresponds to that in the attribute 'classes_'.
    猜你喜欢
    • 2014-04-14
    • 2018-01-29
    • 2019-10-20
    • 2020-06-20
    • 1970-01-01
    • 2018-10-20
    • 2015-11-28
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多