10

scikit सीखने 0.10सरल उदाहरण BernoulliNB (अनुभवहीन Bayes वर्गीकारक) 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 ]) 

साथ वाई की जगह एक जवाब (सही) के रूप में एक अलग वर्ग "2" देता है? क्या यह सिर्फ एक वर्ग लेबल नहीं है?

क्या कोई इस पर कुछ प्रकाश डाल सकता है?

+0

आप सही हैं, बदलते हुए वाई को कुछ भी नहीं बदला जाना चाहिए। मैं वर्तमान मास्टर के साथ पुन: पेश कर सकता हूं। मुझे लगता है कि वर्गीकरण के साथ यह अनिश्चित होना है। –

+0

0.18.2 का उपयोग करके, मुझे अल्फा बदलने के बिना 2 मिल रहा है। – Aaron

उत्तर

5

आपका प्रशिक्षण सेट बहुत छोटा रूप से

clf.predict_proba(X) 

जो पैदावार

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

जो दिखाता है कि वर्गीकारक equiprobable के रूप में सभी वर्गीकरण विचार दिखाया जा सकता है। नमूना BernoulliNB के लिए दस्तावेज़ में दिखाया गया है के साथ तुलना करें जिसके लिए पैदावार predict_proba():

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]]) 

जहाँ मैं परिणाम के लिए numpy.exp() लागू किया उन्हें और अधिक पठनीय बनाने के लिए। जाहिर है, संभावनाएं बराबर के करीब भी नहीं हैं और वास्तव में प्रशिक्षण सेट को वर्गीकृत करती हैं।

8

डिफ़ॉल्ट रूप से, अल्फा, स्मूथिंग पैरामीटर एक है। जैसा कि एमएसडब्ल्यू ने कहा, आपका प्रशिक्षण सेट बहुत छोटा है। चिकनाई के कारण, कोई जानकारी नहीं छोड़ी गई है। यदि आप अल्फा को बहुत कम मूल्य पर सेट करते हैं, तो आपको अपेक्षित परिणाम देखना चाहिए।

संबंधित मुद्दे