scikit学习LogisticRegression.predict_proba的返回值



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

在我的例子中,我得到了这样的结果:

array([
    [4.65761066e-03, 9.95342389e-01],
    [9.75851270e-01, 2.41487300e-02],
    [9.99983374e-01, 1.66258341e-05]
])

从其他计算中,我知道,使用S形函数,第二列是概率。文档说第一列是n_samples,但不可能,因为我的样本是评论,是文本而不是数字。文档还说第二列是n_classes。这当然不可能,因为我只有两个类(即+1-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]结果。

正如iulian所解释的,predict_proba()结果的每一行都是该行中观察到的每个类的概率(并且这些类按照lr.classes_中的顺序排列)。

事实上,它也与predict()密切相关,因为每行的最高概率类由predict()选择。因此,对于任何LogisticRegression(或者任何分类器),以下都是真的。

lr = LogisticRegression().fit(X, y)
highest_probability_classes = lr.predict_proba(X).argmax(axis=1)
all(lr.predict(X) == lr.classes_[highest_probability_classes])     # True

相关内容

  • 没有找到相关文章

最新更新