我正在尝试使用scikit-learn中的不同SVM变种,以及CountVectorizer和HashingVectorizer。在不同的示例中,它们使用fit或fit_transform,让我很困惑应该何时使用哪个。希望能得到澄清,谢谢。
他们具有类似的作用。文档为 HashingVectorizer 提供了一些优缺点: 这种策略有几个优点: 它非常适用于大数据集,因为不需要在内存中存储词汇字典,所以内存占用很低。 它的pickle和un-pickle速度很快,因为除了构造函数参数之外没有任何状态。 它可以在流式(部分拟合)或并行管道中使用,因为在拟合过程中没有计算状态。 但是与使用具有内存词汇表的CountVectorizer相比,也有一些缺点: 无法计算逆变换(从特征索引到字符串特征名称),这可能会在尝试检查哪些特征对模型最重要时成为问题。 可能会发生冲突:不同的标记可以映射到相同的特征索引。然而,在实践中,如果n_features足够大(例如,文本分类问题的2 ** 18),这很少是一个问题。 没有IDF加权,因为这会使转换器具有状态。