countvectorizer与tfidfvectorizer相同,use_idf = false吗?

Oli*_*s_j 11 python scikit-learn

正如标题所述:是否与use_idf = false countvectorizer相同tfidfvectorizer?如果不是为什么不呢?

那么这也意味着添加tfidftransformer这里是多余的吗?

vect = CountVectorizer(min_df=1)
tweets_vector = vect.fit_transform(corpus)
tf_transformer = TfidfTransformer(use_idf=False).fit(tweets_vector)
tweets_vector_tf = tf_transformer.transform(tweets_vector)
Run Code Online (Sandbox Code Playgroud)

Fre*_*Foo 30

不,他们不一样.TfidfVectorizer规范化其结果,即其输出中的每个向量都具有范数1:

>>> CountVectorizer().fit_transform(["foo bar baz", "foo bar quux"]).A
array([[1, 1, 1, 0],
       [1, 0, 1, 1]])
>>> TfidfVectorizer(use_idf=False).fit_transform(["foo bar baz", "foo bar quux"]).A
array([[ 0.57735027,  0.57735027,  0.57735027,  0.        ],
       [ 0.57735027,  0.        ,  0.57735027,  0.57735027]])
Run Code Online (Sandbox Code Playgroud)

这样做是为了使行上的点积与余弦相似.TfidfVectorizer在给出选项时也可以使用对数折扣频率sublinear_tf=True.

要使TfidfVectorizer表现为CountVectorizer,请为其提供构造函数选项use_idf=False, normalize=None.

  • 我不确定自上一篇文章以来API是否有变化,但它是`norm`参数而不是`normalize` (3认同)