Sklearn管道的核外学习

时间:2016-04-07 15:25:04

标签: python scikit-learn text-classification

我是一名新手,使用SGDClassifier在Sklearn做一些工作,使用标签对单句文本进行分类。 (想想Ham / Spam的电子邮件)这是我的管道:

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的用法,以避免将整个训练数据集加载到内存中(核心外学习),但我的问题是分类器是否可以调用{{1}在之后将初始训练集加载到内存中。

在我的用例中,想象一下我的算法必须在训练之后对每个文本进行分类才有相对的'链接到它的文本具有极其相似的特征,唯一的区别是文本中的拼写错误。我希望这些相对的'文本将自动添加到与原始电子邮件相同标签下的分类器知识中,因此可以正确标记逃避算法的常见拼写错误。

本质上,我想要一个可更新的分类器,在python中最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

我理解你的问题的方式,你有一个分类器,已经在一些初始集上进行了预训练,你想对新的观察结果进行预测,然后添加这些观察结果(一旦我们知道实际的标签是什么这些观察结果)进一步训练你的模型。

我实际上认为可以通过用partial_fit调用那些新的观察结果,没有任何附加条件(可以这么说)来完成。 This是一个非常好的例子,似乎适合您的目的。