¿Es un countvectorizer lo mismo que tfidfvectorizer con use_idf = falso?

Como lo indica el título: ¿Es un countvectorizer lo mismo que tfidfvectorizer con use_idf = falso? Si no, porque no ?

Entonces, ¿esto también significa que agregar tfidftransformer aquí es redundante?

 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) 

No, no son lo mismo. TfidfVectorizer normaliza sus resultados, es decir, cada vector en su salida tiene la norma 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]]) 

Esto se hace para que los productos de puntos en las filas sean similitudes de coseno. Además, TfidfVectorizer puede usar frecuencias con descuento logarítmico cuando se le da la opción sublinear_tf=True .

Para hacer que TfidfVectorizer comporte como CountVectorizer , dale las opciones del constructor use_idf=False, normalize=None .

Como dijo larsmans, se supone que TfidfVectorizer (use_idf = False, normalize = None, …) se comporta igual que CountVectorizer.

En la versión actual (0.14.1), hay un error por el cual TfidfVectorizer (binary = True, …) deja en silencio binary = False, lo que puede hacerte perder durante una búsqueda de la rejilla los mejores parámetros. (En contraste, CountVectorizer establece el indicador binario correctamente). Esto parece corregirse en futuras versiones (posteriores a 0.14.1).