sklearn.naive_bayes.GaussianNB
モデルをpartial_fit
で実行しようとしています。scikit-learnでpartial_fitを返します。ValueError:priorsの合計が1である必要があります。
unique_lbls, counts = np.unique(labels, return_counts=True)
counts = counts.astype(float)
priors = counts/counts.sum()
model = GaussianNB(priors=priors)
model.partial_fit(X, y, classes=unique_lbls)
私は `とValueErrorが得る:このために私はこのようなpriors
を計算する事前確率の合計は1でなければなりませんが、私がチェックしていると事前確率は1.0にまとめるん:
print priors.sum()
> 1.0
私は、以下のバージョンを使用しています:
Python 2.7.12
scikit-learn 0.18.2
numpy 1.13.1
私はそれが加算された値の感度にまで来ていることを想像することができますが、私はで再び事前分布を正規化しようとしていますと同じエラーを返します。
プリオーサーの公差が1.0になっているかどうかを確認する別の方法がありますか、それともうまくいかない理由がありますか?
編集:labels
は、データセットのラベル全体を整数で表したnumpy配列です.XとYは完全なデータセットのバッチです。 y
およびlabels
には、両方とも各クラスの100以上の例があります。
Python 2.7.10、sklearn 0.18.2、およびnumpy 1.13.1ではうまくいきません。 Pythonのことは起こりそうにありませんが、可能性があります。データを投稿して、自分のデータで再作成できるかどうか確認できますか? – ncfirth
'y'に' unique_lbls'にない値がありますか? ([partial_fit'](http://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.GaussianNB.html#sklearn.naive_bayes.GaussianNB.partial_fit)のドキュメントに従って) – kazemakase
私は代わりに 'X = numpy.random.rand(10000,100)'と 'y = numpy.random.int(10000)'として作成された一連の乱数を使ってエラーを再現しようとしました。私は上記と同じ手順を実行し、これは問題なく動作します。私のデータには何かがあるはずです。問題は残っていますが、 'priors.sum()'は '1.0'を返すことができますが、partial_fitはまだそうではないと不満を持ちます。 @kazemakase 'y 'のすべてのクラスは' unique_lbls'にあります – Tobias