带有HashingVectorizer和TfidfTransformer的SGDClassifier

时间:2014-08-15 12:58:08

标签: python-2.7 scikit-learn tf-idf

我想了解是否可以使用HashingVectorizer和TfidfTransformer训练在线SGDClassifier(使用partial_fit)。简单地在管道中加入它们将无法正常工作,因为TfidfTransformer是有状态的,因此会破坏在线学习过程。 This post说不可能以在线方式使用tf-idf,但对this post的评论表明它可能以某种方式成为可能:“特别是如果你使用有状态变换器作为TfidfTransformer你会需要对您的数据进行多次传递“。如果没有将整个训练集加载到内存中,这可能吗?如果是这样,怎么样?如果没有,是否有一个替代解决方案将HashingVectorizer与tf-idf组合在大型数据集上?

1 个答案:

答案 0 :(得分:3)

  

如果不将整个训练集加载到内存中,是否可以这样做?

没有。 TfidfTransformer需要在内存中包含整个X矩阵。您需要滚动自己的tf-idf估算器,使用它来计算一次通过数据的每个术语文档频率,然后执行另一次传递以生成tf-idf功能并为其分类。