2012-04-04 15 views
46

में बेवकूफ बेयस प्रशिक्षित क्लासिफायर सेव करें मैं एक प्रशिक्षित वर्गीकृत को कैसे सहेजता हूं इस संबंध में थोड़ा उलझन में हूं। जैसा कि मैं हर बार एक क्लासिफायर को फिर से प्रशिक्षण देना चाहता हूं, मैं इसे वास्तव में खराब और धीमा कर रहा हूं, मैं इसे कैसे सहेज सकता हूं और जब मुझे इसकी ज़रूरत होती है तो इसे फिर से लोड किया जाता है? कोड नीचे है, आपकी मदद के लिए अग्रिम धन्यवाद। मैं एनएलटीके बेवकूफ बेयस क्लासिफायर के साथ पायथन का उपयोग कर रहा हूं।एनएलटीके

classifier = nltk.NaiveBayesClassifier.train(training_set) 
# look inside the classifier train method in the source code of the NLTK library 

def train(labeled_featuresets, estimator=nltk.probability.ELEProbDist): 
    # Create the P(label) distribution 
    label_probdist = estimator(label_freqdist) 
    # Create the P(fval|label, fname) distribution 
    feature_probdist = {} 
    return NaiveBayesClassifier(label_probdist, feature_probdist) 
+2

क्या आप हैं कहां किसी प्रकार की दृढ़ता रणनीति मांग रहे हो? डीबी में सहेजने के रूप में, फ़ाइल और फिर से लोड? आप बस डेटा उठा सकते हैं और बाद में इसे लोड कर सकते हैं। – EdChum

उत्तर

80

बचाने के लिए बाहर की जाँच के लिए एक सरल GitHub परियोजना शुरू की,

import pickle 
f = open('my_classifier.pickle', 'rb') 
classifier = pickle.load(f) 
f.close() 
+0

अगर मैं पहले से ही मसालेदार मॉडल का उपयोग करके अपने मॉडल को पुनः रखना चाहता हूं तो मैं इसके बारे में कैसे जाऊं? आयात अचार एफ = खुला ('my_classifier.pickle', 'आरबी') वर्गीकरण = pickle.load (एफ) ..... फिर? – Mohsin

5

मैं एक ही समस्या के माध्यम से चला गया, और आप वस्तु नहीं बचा सकता के बाद से एक ELEFreqDistr NLTK वर्ग है। किसी भी तरह एनएलटीके नरक धीमा है। प्रशिक्षण ने एक सभ्य सेट पर 45 मिनट का समय लिया और मैंने एल्गोरिदम के अपने संस्करण को लागू करने का फैसला किया (इसे पिल्ला के साथ चलाएं या इसका नाम बदलें .pyx और साइथन इंस्टॉल करें)। इसमें एक ही सेट के साथ लगभग 3 मिनट लगते हैं और यह केवल जेसन के रूप में डेटा को सहेज सकता है (मैं अचार को लागू करूंगा जो तेज/बेहतर है)।

import pickle 
f = open('my_classifier.pickle', 'wb') 
pickle.dump(classifier, f) 
f.close() 

बाद में लोड करने के लिए:

मैं कोड here

+0

धन्यवाद @ luke14free, क्या आपके पास इसका उपयोग करने के लिए एक दस्तावेज़ीकरण है? पहले ही, आपका बहुत धन्यवाद। – Istvan

+0

मैं आपको कोड देखता हूं लेकिन साइथन को अभी तक लागू नहीं करता –

0

का प्रशिक्षण प्राप्त मसालेदार Classifer:

f = open('originalnaivebayes5k.pickle','rb') 
classifier = pickle.load(f) 
classifier.train(training_set) 
print('Accuracy:',nltk.classify.accuracy(classifier,testing_set)*100) 
f.close() 
संबंधित मुद्दे