2016-04-07 125 views
2

我是一個新手,在Sklearn中使用SGDClassifier來做一些工作,使用標籤對一個句子的文本進行分類。 (想想例如火腿/垃圾郵件)這是我的管道:Sklearn管道的核心外學習

clf = SGDClassifier(fit_intercept=True, loss='modified_huber', alpha=.0001, shuffle=True, 
         n_iter=15, n_jobs=-1, penalty='elasticnet') 
vectorizer = TfidfVectorizer(analyzer='char_wb', ngram_range=(3, 5), lowercase=True, stop_words=stopset, 
          use_idf=True, norm='l2') 
pipeline = Pipeline([ 
    ('mapper', vectorizer), 
    ('clf', clf), 
]) 

我熟悉的partial_fit的使用,以避免對整個訓練數據集加載到內存中(外的核心學習),但我問題在於分類器是否有可能在之後調用partial_fit將初始訓練集加載到內存中。

在我的使用案例中,想象一下,在訓練有與其相關的「相對」文本後,我的算法必須對每個文本進行分類,這些文本具有極其相似的特徵,唯一的區別是文本中拼寫錯誤。我希望這些「相對」文本能夠在與原始電子郵件相同的標籤下自動添加到分類器的知識中,因此避免算法的常見拼寫錯誤也會被正確標記。

從本質上講,我想要一個可更新的分類器,在python中做什麼最好的方法是什麼?

回答

0

我理解你的問題的方式,你有一個分類器已經預先訓練了一些初始設置,並且你想對新的觀察做出預測,然後添加那些觀察值(一旦我們知道實際是什麼那些觀察的標籤)來進一步訓練你的模型。

我真的認爲只要撥打partial_fit就可以輕鬆完成這些新的觀察結果,沒有任何附加條件(可以這麼說)。 This是一個非常好的例子,它似乎適用於您的目的。