【发布时间】:2015-07-13 11:37:10
【问题描述】:
我正在尝试使用 scikit-learn 中的各种 SVM 变体以及 CountVectorizer 和 HashingVectorizer。他们在不同的例子中使用 fit 或 fit_transform,让我感到困惑什么时候使用。
任何澄清都将非常荣幸。
【问题讨论】:
标签: machine-learning scikit-learn classification svm
我正在尝试使用 scikit-learn 中的各种 SVM 变体以及 CountVectorizer 和 HashingVectorizer。他们在不同的例子中使用 fit 或 fit_transform,让我感到困惑什么时候使用。
任何澄清都将非常荣幸。
【问题讨论】:
标签: machine-learning scikit-learn classification svm
它们的用途相似。 documentation 为 HashingVectorizer 提供了一些优点和缺点:
这种策略有几个优点:
- 内存非常低,可扩展到大型数据集,因为无需在内存中存储词汇字典
- pickle 和 un-pickle 很快,因为它除了构造函数参数之外没有任何状态
- 它可用于流式传输(部分拟合)或并行管道,因为在拟合期间不计算任何状态。
还有几个缺点(与使用 CountVectorizer 和 记忆词汇):
- 无法计算逆变换(从特征索引到字符串特征名称),这在尝试 反思哪些特征对模型最重要。
- 可能存在冲突:不同的标记可以映射到相同的特征索引。然而在实践中,这很少是一个问题,如果 n_features 足够大(例如 2 ** 18 用于文本分类 问题)。
- 没有 IDF 加权,因为这会使转换器有状态。
【讨论】: