如何为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)

最新更新