Python 2.7 在Sklearn中如何计算TF

Python 2.7 在Sklearn中如何计算TF,python-2.7,nlp,scikit-learn,Python 2.7,Nlp,Scikit Learn,我一直在试验sklearn的tfidfvectorier。 我只关心TF,而不关心idf,因此我的设置有use\u idf=FALSE 完整设置包括: vectorizer = TfidfVectorizer(max_df=0.5, max_features= n_features, ngram_range=(1,3), use_idf=False) 我一直在尝试复制.fit_transform的输出,但到目前为止还没有成功,希望有人能为我解释

我一直在试验sklearn的
tfidfvectorier
。 我只关心TF,而不关心idf,因此我的设置有
use\u idf=FALSE
完整设置包括:

vectorizer = TfidfVectorizer(max_df=0.5, max_features= n_features,
                         ngram_range=(1,3), use_idf=False)
我一直在尝试复制
.fit_transform
的输出,但到目前为止还没有成功,希望有人能为我解释计算过程

我的玩具示例是:

document = ["one two three one four five",
            "two six eight ten two"]

from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
n_features = 5
vectorizer = TfidfVectorizer(max_df=0.5, max_features= n_features,
                             ngram_range=(1,3), use_idf=False)

X = vectorizer.fit_transform(document)

count = CountVectorizer(max_df=0.5, max_features= n_features,
                             ngram_range=(1,3))
countMat = count.fit_transform(document)

我假设计数向量器中的计数与Tfidf向量器中使用的计数相同。因此,我试图将countMat对象更改为与X匹配。

我错过了文档中的一行,其中说

每一行都被标准化为单位欧几里德范数

因此,回答我自己的问题——答案是:

for i in xrange(countMat.toarray().__len__()):
    row = countMat.toarray()[i]
    row / np.sqrt(np.sum(row**2)) 
尽管我确信有一种更优雅的方式来编码结果