10

않는 이유는 다음과 같은 사소한 코드 :간단한 예 - 설명 할 수 분류 0.10</p> <p>을 scikit가 배울 사용

from sklearn.naive_bayes import * 

import sklearn 
from sklearn.naive_bayes import * 

print sklearn.__version__ 

X = np.array([ [1, 1, 1, 1, 1], 
       [0, 0, 0, 0, 0] ]) 
print "X: ", X 
Y = np.array([ 1, 2 ]) 
print "Y: ", Y 

clf = BernoulliNB() 
clf.fit(X, Y) 
print "Prediction:", clf.predict([0, 0, 0, 0, 0])  

인쇄 출력의 답변 "1" ? 모델을 [0,0,0,0,0] => 2로 훈련 시켰을 때 나는 대답으로 "2"를 기대하고있었습니다.

Y = np.array([ 3, 2 ]) 

와 Y 교체는 응답 (올바른) 같은 다른 클래스 "2"를 부여 하는가? 이것은 단지 수업 레이블이 아닌가?

누군가가이 문제에 대해 밝힐 수 있습니까? 분류가 동일 확률로 모든 분류를 보는 것을 알

array([[ 0.5, 0.5], 
     [ 0.5, 0.5]]) 

을 수득

clf.predict_proba(X) 

의해 표시 될 수

+0

맞습니다. Y를 변경해도 아무 것도 변경되지 않아야합니다. 나는 현재 주인과 함께 재현 할 수 있었다. 미정이라는 분류 자와 관련이 있다고 생각합니다. –

+0

0.18.2를 사용하면 알파를 변경하지 않고 2를 얻습니다. – Aaron

답변

5

트레이닝 세트는 너무 작다. 하는 수익률을 predict_proba()BernoulliNB에 대한 설명서에 표시된 샘플과 비교 : 나는 결과에 numpy.exp()를 적용

array([[ 2.71828146, 1.00000008, 1.00000004, 1.00000002, 1.  ], 
     [ 1.00000006, 2.7182802 , 1.00000004, 1.00000042, 1.00000007], 
     [ 1.00000003, 1.00000005, 2.71828149, 1.  , 1.00000003], 
     [ 1.00000371, 1.00000794, 1.00000008, 2.71824811, 1.00000068], 
     [ 1.00000007, 1.0000028 , 1.00000149, 2.71822455, 1.00001671], 
     [ 1.  , 1.00000007, 1.00000003, 1.00000027, 2.71828083]]) 

이 그들을 더 읽을 수 있도록. 물론, 확률은 거의 같지 않고 실제로 훈련 세트를 잘 분류합니다.

8

기본적으로 알파는 스무딩 매개 변수가 1입니다. msw가 말했듯이, 당신의 훈련 세트는 매우 작습니다. 매끄러움 때문에 정보가 남지 않습니다. 알파 값을 아주 작은 값으로 설정하면 예상 한 결과가 나타납니다.