Sono leggermente confuso riguardo al modo in cui salvi un classificatore esperto. Come in questo, rieducare un classificatore ogni volta che voglio usarlo è ovviamente molto brutto e lento, come posso salvarlo e caricarlo di nuovo quando ne ho bisogno? Il codice è sotto, grazie in anticipo per il vostro aiuto. Sto usando Python con NLTK Naive Bayes Classifier.Salva classificatore addestrato Naive Bayes in NLTK
risposta
Per salvare:
import pickle
f = open('my_classifier.pickle', 'wb')
pickle.dump(classifier, f)
f.close()
Per caricare successivamente:
import pickle
f = open('my_classifier.pickle', 'rb')
classifier = pickle.load(f)
f.close()
come farei se volessi riqualificare il mio modello usando un modello già decapato? importazione salamoia f = open ('my_classifier.pickle', 'rb') classificatore = pickle.load (f) ..... poi? – Mohsin
Sono andato attraverso lo stesso problema, e non è possibile salvare l'oggetto poiché è una classe NLTK ELEFreqDistr. Comunque, NLTK è un inferno lento. La formazione ha richiesto 45 minuti su un set decente e ho deciso di implementare la mia versione dell'algoritmo (eseguirlo con pypy o rinominarlo .pyx e installare cython). Ci vogliono circa 3 minuti con lo stesso set e può semplicemente salvare i dati come json (implementerò pickle che è più veloce/migliore).
ho iniziato un semplice progetto github, controlla il codice here
Grazie @ luke14free, hai una documentazione su come usarlo? Grazie in anticipo. – Istvan
Vedo il tuo codice ma non implemento cython ancora –
per riqualificare la sott'aceto 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()
Are y stai chiedendo un qualche tipo di strategia di persistenza? Come in save to DB, file e caricare di nuovo? Potresti semplicemente raccogliere i dati e caricarli di nuovo in seguito. – EdChum