2017-12-02 11 views
0

私は、Sklearn、Machine learningとその関連性がかなり新しいです。私は1日を探しましたが、まだ答えを理解することはできません。Sklearn LogisticRegression predict_proba結果look weird

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

これは単なる印刷スタイルです!

はこのデモを見てください:

コード:

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  
関連する問題