我想了解是否可以使用HashingVectorizer和TfidfTransformer来训练在线SGDClassifier(带有partial_fit)。由于TfidfTransformer是有状态的,因此仅将它们加入管道中是行不通的,因此会中断在线学习过程。 This post说不可能以在线方式使用tf-idf,但是对this post的评论表明它可能会以某种方式出现:“特别是如果您将有状态转换器用作TfidfTransformer,则您将需要对您进行多次传递数据”。如果不将整个训练集加载到内存中,是否有可能?如果是这样,怎么办?如果没有,是否存在将大型数据集上的HashingVectorizer与tf-idf结合使用的替代解决方案?

最佳答案

如果不将整个训练集加载到内存中,是否有可能?


否。TfidfTransformer需要在内存中具有整个X矩阵。您将需要滚动自己的tf-idf估算器,用它来一次遍历数据来计算每学期文档的频率,然后再进行一次传递以生成tf-idf特征并为它们拟合分类器。

07-24 09:22