Sklearn LogisticRegression predict_proba结果看起来很奇怪

时间:2017-12-02 18:08:49

标签: scikit-learn

我对SKlearn,机器学习及其相关内容都很陌生。我搜索了一天但仍然无法找到答案。

model = LogisticRegression(C=1)
model.fit(X, y)
print(model.predict_proba(X_test))
// output
[[  1.01555532e-08   2.61926230e-01   7.37740949e-01   3.32810963e-04]]

我很困惑输出是否正确。当我尝试使用相同数据集的SVM时,我得到了[[ 0.21071225 0.42531172 0.01024818 0.35372784]]看起来像概率,这就是我想要的。如何使LogisticRegression模型获得与SVM相同的概率样式?我有什么误解?

1 个答案:

答案 0 :(得分:1)

这只是印刷风格!

看一下这个演示:

代码:

import numpy as np

p = np.array([[  1.01555532e-08,   2.61926230e-01,   7.37740949e-01,   3.32810963e-04]])
print('p: ', p)
print('sum: ', p.sum())                         # approximately a probability-distribution?

np.set_printoptions(suppress=True)
print('p: ', p)                                 # same print as above
                                                # but printing-style was changed before!

输出:

p:  [[1.01555532e-08 2.61926230e-01 7.37740949e-01 3.32810963e-04]]
sum:  1.0000000001185532
p:  [[0.00000001 0.26192623 0.73774095 0.00033281]]

Numpy使用大量代码来决定如何打印数组,具体取决于内部的值!在这里,我们使用np.set_printoptions更改了一些内容。

您的输出看起来不同,因为SVM预测的输出没有小值,就像另一个那样!

  

抑制:bool,可选

     

是否使用科学记数法禁止打印小浮点值(默认为False)。

科学记数法的使用也适用于python的类型:

x = 0.00000001
print(x)
# 1e-08