如何在python中的sklearn中打印tf-idf得分矩阵

时间:2017-10-06 02:40:19

标签: python scikit-learn tf-idf

我使用sklearn获取tf-idf值如下。

from sklearn.feature_extraction.text import TfidfVectorizer
myvocabulary = ['life', 'learning']
corpus = {1: "The game of life is a game of everlasting learning", 2: "The unexamined life is not worth living", 3: "Never stop learning"}
tfidf = TfidfVectorizer(vocabulary = myvocabulary, ngram_range = (1,3))
tfs = tfidf.fit_transform(corpus.values())

现在我想在矩阵中查看我计算的tf-idf分数,如下所示。 tf-idf matrix

我试着这样做。

idf = tfidf.idf_
dic = dict(zip(tfidf.get_feature_names(), idf))
print(dic)

然而,我得到如下输出。

{'life': 1.2876820724517808, 'learning': 1.2876820724517808}

请帮帮我。

3 个答案:

答案 0 :(得分:4)

感谢σηγ,我可以从this question

找到答案
feature_names = tfidf.get_feature_names()
corpus_index = [n for n in corpus]
import pandas as pd
df = pd.DataFrame(tfs.T.todense(), index=feature_names, columns=corpus_index)
print(df)

答案 1 :(得分:2)

提问者提供的答案是对的,我想做一个调整。 上面的代码给出了

         Doc1     Doc2

特征1

特征2

矩阵应该看起来像这样

         feature1     feature2

文档1

文档2

所以你可以做一个简单的改变来获得它

df = pd.DataFrame(tfs.todense(), index=corpus_index, columns=feature_names)

答案 2 :(得分:1)

我发现了使用 toarray()函数

的另一种可能的方法
import pandas as pd
print(tfidf.get_feature_names())
print(tfs.toarray())
print(pd.DataFrame(tfs.toarray(), 
columns=tfidf.get_feature_names(), 
index=['doc1','doc2','doc3'])) `