什么是Hashing vectorizer和Count vectorizer的区别,何时使用每种方法?

我在使用scikit-learn中的各种SVM变体,并结合CountVectorizer和HashingVectorizer进行尝试。它们在不同的示例中使用fit或fit_transform,这让我感到困惑,不知道在什么时候应该使用哪一个。

任何澄清都将不胜感激。


回答:

它们服务于相似的目的。文档HashingVectorizer提供了一些优点和缺点:

这种策略有几个优点:

  • 它对大型数据集具有非常低的内存扩展性,因为不需要在内存中存储词汇表
  • 它快速进行序列化和反序列化,因为除了构造函数参数外它不保存任何状态
  • 它可以在流式(部分拟合)或并行管道中使用,因为在拟合过程中不计算任何状态。

也有几个缺点(与使用带有内存中词汇表的CountVectorizer相比):

  • 无法计算逆变换(从特征索引到字符串特征名称),这在试图审视哪些特征对模型最重要时可能是个问题
  • 可能存在冲突:不同的标记可能被映射到相同的特征索引。然而,在实践中,如果n_features足够大(例如,文本分类问题中的2 ** 18),这很少成为问题
  • 没有IDF加权,因为这会使变换器具有状态性。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注