2017-10-06 1 views
1

ich mit sklearn drucken, um tf-IDF-Werte wie folgt zu erhalten.Wie tf-IDF Scores-Matrix in Sklearn in Python

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()) 

Jetzt möchte ich meine berechneten Tf-IDF-Scores in einer Matrix wie folgt anzeigen. tf-idf matrix

Ich habe versucht, es wie folgt zu tun.

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

aber dann bekomme ich die Ausgabe wie folgt.

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

Bitte helfen Sie mir.

+0

Die tatsächliche Ausgabe, die Sie aus dem 'tfidf.fit_transform get()' ist nur in dieser Form. Benötigt werden nur die Spaltennamen, die Sie aus 'tfidf.get_feature_names()' erhalten. Wickeln Sie diese beiden in einen Datenrahmen. –

Antwort

1

Dank σηγ ich eine Antwort von 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) 
0

Die Antwort von dem Fragesteller ist rechts zur Verfügung gestellt finden könnte, würde Ich mag eine Einstellung vorzunehmen. Der obige Code gibt

  Doc1  Doc2 

feature1

feature2

Die Matrix ähnliche

  feature1  feature2 

Doc1

Doc2

suchen sollte

so können Sie eine einfache Änderung machen

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