【问题标题】:Python scikit learn's TfidfVectorizer - max of 1.0?Python scikit learn 的 TfidfVectorizer - 最大值为 1.0?
【发布时间】:2015-10-14 01:54:10
【问题描述】:

我在网上找不到这个答案,但是 tfidfVectorizer.fit_transform 的结果是 最大值为 1.0 的数组吗?

因为,随着 idf(term_i)= log (#number of docs/ number of docs containing term_i ),在许多情况下,idf 和随后的 tfidf 不应该 > 1.0 吗?

即包含“苦艾酒”一词的文件。假设我们的术语 freq (tf) 为 1,但 idf 为 (1000 个文档总数/ 1 个包含“苦艾酒”的文档) = 1000, 1*1000 = 1000,不是吗?

但在我使用 scikit-learn 的 TfidfVectorizer 的情况下,我得到的最大值似乎是 1。它是标准化的吗?

【问题讨论】:

    标签: python nltk tf-idf


    【解决方案1】:

    默认情况下,tfidf 行是 L2 规范化的。 Here 是源代码中的关键行。

    if self.norm:
            X = normalize(X, norm=self.norm, copy=False)
    

    normalize() 来自 sklearn.preprocessing 模块,它表示默认情况下对行进行规范化。 Here 是指向 normalize() 文档的链接。

    【讨论】:

      猜你喜欢
      • 2018-01-23
      • 2014-08-22
      • 2017-05-26
      • 2014-11-12
      • 2019-04-03
      • 2018-05-13
      • 2015-08-30
      • 2016-08-16
      相关资源
      最近更新 更多