Hashing vectorizer和Count vectorizer之间有什么区别?

use*_*123 6 classification machine-learning svm scikit-learn

我正在尝试各种SVM变体scikit-learn与CountVectorizer和HashingVectorizer.他们在不同的例子中使用fit或fit_transform,这让我很困惑.

任何澄清都会非常荣幸.

cfh*_*cfh 15

他们有类似的目的.该文档为以下内容提供了一些专业知识和内容HashingVectorizer:

这种策略有几个优点:

  • 它是非常低的内存可扩展到大型数据集,因为不需要在内存中存储词汇表
  • 它除了构造函数参数之外没有任何状态,所以它很快就会发生酸洗和解毒
  • 它可用于流(部分拟合)或并行管道,因为在拟合期间没有计算状态.

还有一些缺点(使用带有内存词汇表的CountVectorizer):

  • 没有办法计算逆变换(从特征索引到字符串特征名称),当试图内省哪些特征对模型最重要时,这可能是一个问题.
  • 可能存在冲突:不同的令牌可以映射到相同的特征索引.但是在实践中,如果n_features足够大(例如,文本分类问题为2**18),这很少成为问题.
  • 没有IDF加权,因为这会使变压器有状态.