【问题标题】:Out-Of-Core learning for Sklearn pipelinesSklearn 管道的核外学习
【发布时间】:2016-07-28 14:21:02
【问题描述】:

我是一个新手,在 Sklearn 中使用SGDClassifier 做一些工作,使用标签对单句文本进行分类。 (例如垃圾邮件/垃圾邮件)这是我的管道:

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 中最好的方法是什么?

【问题讨论】:

    标签: python scikit-learn text-classification


    【解决方案1】:

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

    我实际上认为只需调用 partial_fit 并使用这些新观察结果即可轻松完成,无需附加任何条件(可以这么说)。 This 是一个很好的例子,它似乎适合你的目的。

    【讨论】:

      猜你喜欢
      • 2015-03-22
      • 2018-11-27
      • 2013-07-28
      • 1970-01-01
      • 2023-01-28
      • 2019-06-13
      • 2016-09-19
      • 2020-01-01
      • 1970-01-01
      相关资源
      最近更新 更多