2017-03-08 3 views
0

래퍼 내에서 sklearn 분류자를 만들려고했는데 한 번에 분류자를 훈련하지 않으면이 튜토리얼을 모두 훈련시키지 않으면 데이터를 한 번에 삭제하면 분류 자에게 수행 된 이전 교육이 삭제됩니다. 내가 분명히했으면 좋겠지 만, 여기에 설명하지 않는 코드가있다.NLTK SklearnClassifier 래퍼 데이터

from nltk.classify.scikitlearn import SklearnClassifier 
from sklearn.naive_bayes import MultinomialNB 

class classifier(object): 
    def __init__(self,c): 
     self.c = c 

    def train(self,featuresets): 
     self.c.train(featuresets) 

    def classify(self,feature): 
     self.c.classify(feature) 

clf = classifier(SklearnClassifier(MultinomialNB())) 
while True: 
    #some lengthy operation 
    clf.train(featuresets) 
    #some lengthy operation again 
    clf.classify(feature) 

나는 지금 내가하고 싶은 말을 이해하기를 바랍니다. 따라서 clf이 루프에서 훈련을 받으면 이전의 모든 훈련이 쓸모 없게되지는 않을까요? 그리고 무용지물이되면 같은 것을 달성하는 다른 방법은 무엇입니까? 미리 감사드립니다.

답변

0

모든 것은 사용중인 분류 기준에 따라 다릅니다. 모든 공상 과학 소분기 분류자가 여러 번 배울 수있는 것은 아닙니다.

여러 번 훈련 시키려면 분류 자 ​​객체를 초기화 할 때 warm_start = True를 설정하십시오.

MultinomialNB는 여러 번 훈련받을 가능성이 없습니다. 즉 http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html이이를 수행 할 수 있습니다.

그럼에도 불구하고 먼저 실제로 여러 번 훈련해야하는지 생각하는 것이 좋습니다. 증분 학습은 대개 데이터가 실행 가능한 메모리를 덮어 쓸 때 사용됩니다.

warm_start : bool, default: False 

When set to True, reuse the solution of the previous call to fit as initialization, 
otherwise, just erase the previous solution. Useless for liblinear solver.