python - 在 Scikit 中进行文本分类时是否需要标准化数据

标签 python r machine-learning nlp scikit-learn

我正在使用 Scikit 开发垃圾邮件过滤器。 以下是我遵循的步骤:

Xdata = [“这是垃圾邮件”,“这是火腿”,“这又是垃圾邮件”]

  1. 矩阵 = 计数向量化器 (XData) 。矩阵将包含所有文档中每个单词的计数。所以 Matrix[i][j] 会给出文档 i

  2. 中单词 j 的计数
  3. Matrix_idfX = TFIDFVectorizer(矩阵)。它将标准化分数。

  4. Matrix_idfX_Select = SelectKBest( Matrix_IdfX , 500) 。它将把矩阵减少到 500 个最佳得分列

  5. Multinomial.train(Matrix_Idfx_Select)

现在我的问题是我需要在上述四个步骤中的任何一个步骤中执行标准化或标准化吗?如果是,那么在哪一步之后以及为什么?

谢谢

最佳答案

您可能需要在标记化(词干提取或词形还原)之前对单词进行规范化。请参阅related question例如。

注意:您不需要,因为“TfidfVectorizer 将 CountVectorizer 和 TfidfTransformer 的所有选项组合在一个模型中”( scikit docs ) 另请注意,“虽然 tf-idf 归一化通常非常有用,但在某些情况下,二进制出现标记可能会提供更好的特征。这可以通过使用 CountVectorizer 的二进制参数来实现。特别是一些估计器,例如 Bernoulli Naive贝叶斯显式地对离散 bool 随机变量进行建模。此外,非常短的文本可能具有嘈杂的 tf-idf 值,而二进制出现信息则更稳定。” (相同的文档)

关于python - 在 Scikit 中进行文本分类时是否需要标准化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30546071/

相关文章:

algorithm - Reptree (WEKA),只对数字属性的值进行一次排序

Python openpyxl 在修改现有文件时丢失超链接

r - 如何确定R中的当前目录名称?

python - 关于在 Python 中关闭文件

r - 使用不相等数量的观测值进行数据平滑处理?

r - 如何从data.frame获取 "code for creating a variable"

r - csv 文件中字符串的 tf-idf

python - OneHotEncoder 只有一个特征是字符串

python - Keras VGG16 预测速度慢

python os.rename ""当文件已经存在时无法创建文件