2016-04-07 83 views
2

我是一个新手,在Sklearn中使用SGDClassifier来做一些工作,使用标签对一个句子的文本进行分类。 (想想例如火腿/垃圾邮件)这是我的管道:Sklearn管道的核心外学习

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

在我的使用案例中,想象一下,在训练有与其相关的“相对”文本后,我的算法必须对每个文本进行分类,这些文本具有极其相似的特征,唯一的区别是文本中拼写错误。我希望这些“相对”文本能够在与原始电子邮件相同的标签下自动添加到分类器的知识中,因此避免算法的常见拼写错误也会被正确标记。

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

回答

0

我理解你的问题的方式,你有一个分类器已经预先训练了一些初始设置,并且你想对新的观察做出预测,然后添加那些观察值(一旦我们知道实际是什么那些观察的标签)来进一步训练你的模型。

我真的认为只要拨打partial_fit就可以轻松完成这些新的观察结果,没有任何附加条件(可以这么说)。 This是一个非常好的例子,它似乎适用于您的目的。