[英]how to force scikit-learn DictVectorizer not to discard features?
[英]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.