いくつかのクラスと対応する特徴ベクトルがあり、predict_proba()を実行すると次のようになります。
_classes = ['one','two','three','one','three']
feature = [[0,1,1,0],[0,1,0,1],[1,1,0,0],[0,0,0,0],[0,1,1,1]]
from sklearn.naive_bayes import BernoulliNB
clf = BernoulliNB()
clf.fit(feature,classes)
clf.predict_proba([0,1,1,0])
>> array([[ 0.48247836, 0.40709111, 0.11043053]])
_
どのクラスに対応する確率を取得したいと思います。このページでは、それらは算術順で並べられていると言っていますが、私はそれが何を意味するのか100%確信していません: http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC .html#sklearn.svm.SVC.predict_proba
私のトレーニング例がトラフに行き、対応するインデックスをクラスの最初の出会いに割り当てたことを意味しますか、または次のようなコマンドがありますか?
clf.getClasses() = ['one','two','three']?
.classes_
マッピングを回復する分類子の属性。あなたの例では:
>>> clf.classes_
array(['one', 'three', 'two'],
dtype='|S5')
そして、あなたの質問にミニマルな再現スクリプトを入れてくれたことに感謝します。IPythonシェルにコピー&ペーストするだけで答えがとても簡単になります:)
原則として、_で終わる学習者の属性は学習済みの属性です。あなたの場合、clf.classes_
を探しています。
一般的にPythonでは、dir
関数を使用して、オブジェクトがどの属性を持っているかを調べることができます。
import pandas as pd
test = [[0,1,1,0],[1,1,1,0]]
pd.DataFrame(clf.predict_proba(test), columns=clf.classes_)
Out[2]:
one three two
0 0.542815 0.361876 0.095309
1 0.306431 0.612863 0.080706
import pandas as pd
test = [[0,1,1,0],[1,1,1,0]]
pd.DataFrame(clf.predict_proba(test), columns=clf.classes_)
アウト[2]:
one three two
0 0.542815 0.361876 0.095309
1 0.306431 0.612863 0.080706
私はpythonに慣れていないので、どのようにすれば上記の応答をインデックスごとの最大確率を表す2つの列にグループ化できますか。基本的に2つの列 "Number"および "probability"インデックスおよび関連する番号全体で最高の確率を見つける
出力は次のとおりです。
Number probability
0. One 0.542815
1. Three 0.612863