我想了解是否可以使用HashingVectorizer和TfidfTransformer训练在线SGDClassifier(使用partial_fit)。简单地在管道中加入它们将无法正常工作,因为TfidfTransformer是有状态的,因此会破坏在线学习过程。 This post说不可能以在线方式使用tf-idf,但对this post的评论表明它可能以某种方式成为可能:“特别是如果你使用有状态变换器作为TfidfTransformer你会需要对您的数据进行多次传递“。如果没有将整个训练集加载到内存中,这可能吗?如果是这样,怎么样?如果没有,是否有一个替代解决方案将HashingVectorizer与tf-idf组合在大型数据集上?
答案 0 :(得分:3)
如果不将整个训练集加载到内存中,是否可以这样做?
没有。 TfidfTransformer
需要在内存中包含整个X
矩阵。您需要滚动自己的tf-idf估算器,使用它来计算一次通过数据的每个术语文档频率,然后执行另一次传递以生成tf-idf功能并为其分类。