2017-04-21 11 views
0

sklearn予測からの出力が関数内に置かれたときに異なる理由を理解しようとしています。Sklearn確率が関数内で異なる

私は、テキストのために訓練された単純ベイズ分類器を持っていると私はこの

examples = ['my favorite sport is probably baseball'] 
predictions = vec_clf.predict(examples)[0] 
probs = vec_clf.predict_proba(examples) 
m = np.max(probs) 

print predictions,m 

のように私の予測を行うとき、私は右の予測結果を取得します。しかし、これを行う関数を書く場合

def classify(input): 

    predictions = vec_clf.predict(input)[0] 
    probs = vec_clf.predict_proba(input) 
    m = np.max(probs) 

    return predictions,m 

classify('my favorite sport is probably baseball') 

これは、異なる信頼度とクラスラベルで完全に異なる非常に間違った結果を返します。それはなぜこれをするのだろうか?

答えて

1

最初の試みで、あなたは(期待されているものである)model.predict_probamodel.predictに文字列のリストを渡している、後者の試みで、あなたは、単一の文字列を渡しています。代わりに、文字列リスト渡す:

classify(['my favorite sport is probably baseball']) 

またはあなたの関数の内部リストにinputをラップ:あなただけの文字列を渡したときに何が起こっているか

def classify(input): 
    input = [input] 
    predictions = vec_clf.predict(input)[0] 
    probs = vec_clf.predict_proba(input) 
    m = np.max(probs) 

    return predictions,m 

することは、個々の文字があるということです文書として解釈される。だから、ちょうどやってみてください:

vec_clf.predict('my favorite sport is probably baseball') 

何が起こっているのかをよく見てください。

関連する問題