Python 如何向scikit learn DictVectorizer添加功能?

Python 如何向scikit learn DictVectorizer添加功能?,python,machine-learning,scikit-learn,spam-prevention,naivebayes,Python,Machine Learning,Scikit Learn,Spam Prevention,Naivebayes,我正在使用scikit learn中的多项式NB模型训练垃圾邮件检测器。我使用DictVectorizer类将标记转换为字数(即特征)。我希望能够在模型到达时使用新数据(在本例中是以聊天消息的形式传入我们的应用服务器)随时间对模型进行训练。对于这一点,部分拟合函数似乎很有用 然而,我似乎不明白的是,在听写向量器最初经过“训练”之后,如何扩大听写向量器的大小。如果出现了从未见过的新功能/新单词,它们将被忽略。我想做的是对模型和dictvectorier的当前版本进行pickle处理,并在每次我们进

我正在使用scikit learn中的多项式NB模型训练垃圾邮件检测器。我使用DictVectorizer类将标记转换为字数(即特征)。我希望能够在模型到达时使用新数据(在本例中是以聊天消息的形式传入我们的应用服务器)随时间对模型进行训练。对于这一点,部分拟合函数似乎很有用

然而,我似乎不明白的是,在听写向量器最初经过“训练”之后,如何扩大听写向量器的大小。如果出现了从未见过的新功能/新单词,它们将被忽略。我想做的是对模型和dictvectorier的当前版本进行pickle处理,并在每次我们进行新的培训课程时更新它们。这可能吗?

在中,他们使用字典来完成听写器的学习阶段。您可能会将新功能添加到原始词典中,并执行
fit\u转换
。 这样,您就可以为DictVectorier添加您的值

小心使用偏_拟合方法,这是一种新的方法。正如方法文档中所述,存在处理开销

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)

如果我需要一直保存整个字典,那么对于流式传输大量数据的情况,这是没有用的。然后,本质上,每次新数据到达时,我都要重新训练整个历史。