簡體   English   中英

如何向scikit學習DictVectorizer添加功能?

[英]How to add features to scikit-learn DictVectorizer?

我正在使用scikit-learn中的MultinomialNB模型訓練垃圾郵件檢測器。 我使用DictVectorizer類將標記轉換為字數(即特征)。 我希望能夠隨着時間的流逝使用新數據來訓練模型(在這種情況下,以傳入我們的應用服務器的聊天消息的形式)。 為此,partial_fit函數似乎很有用。

但是,我似乎無法弄清楚的是DictVectorizer最初經過“訓練”后如何擴大其尺寸。 如果出現了從未見過的新功能/單詞,它們將被忽略。 我想做的是腌制模型的當前版本和DictVectorizer,並在每次進行新的培訓時都對其進行更新。 這可能嗎?

文檔中 ,他們使用詞典來完成DictVectorizer的學習階段。 您可以將新功能添加到原始字典中,然后執行fit_transform 這樣,您就可以將值添加到DictVectoriser中。

要小心使用partial_fit方法,這是一種繁重的處理 如方法文檔所述,存在處理開銷。

from sklearn.feature_extraction import DictVectorizer
v = DictVectorizer(sparse=False)
D = [{'foo': 1, 'bar': 2}, {'foo': 3, 'baz': 1}]
X = v.fit_transform(D)

# Learn and do treatment

# when new data come (value is a dictionary)
D.append(values)
X = v.fit_transform(D) # do the fit again

# 2 choices, 
# wait for more modification before learning 
# or learn each time you have modification (not really performant)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM