trazar un documento tfidf 2D gráfico

Me gustaría trazar un gráfico 2d con el eje x como término y el eje y como puntaje TFIDF (o documento id) para mi lista de oraciones. Utilicé fit_transform () de scikit learn para obtener la matriz scipy pero no sé cómo usar esa matriz para trazar la gráfica. Estoy tratando de obtener una ttwig para ver qué tan bien se pueden clasificar mis oraciones usando kmeans.

Aquí está la salida de fit_transform(sentence_list) :

(ID de documento, número de término) puntuación tfidf

 (0, 1023) 0.209291711271 (0, 924) 0.174405532933 (0, 914) 0.174405532933 (0, 821) 0.15579574484 (0, 770) 0.174405532933 (0, 763) 0.159719994016 (0, 689) 0.135518787598 

Aquí está mi código:

 sentence_list=["Hi how are you", "Good morning" ...] vectorizer=TfidfVectorizer(min_df=1, stop_words='english', decode_error='ignore') vectorized=vectorizer.fit_transform(sentence_list) num_samples, num_features=vectorized.shape print "num_samples: %d, num_features: %d" %(num_samples,num_features) num_clusters=10 km=KMeans(n_clusters=num_clusters, init='k-means++',n_init=10, verbose=1) km.fit(vectorized) PRINT km.labels_ # Returns a list of clusters ranging 0 to 10 

Gracias,

Cuando usas Bag of Words, cada una de tus oraciones se representa en un espacio dimensional de alta longitud igual al vocabulario. Si desea representar esto en 2D, necesita reducir la dimensión, por ejemplo, utilizando PCA con dos componentes:

 from sklearn.datasets import fetch_20newsgroups from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer from sklearn.decomposition import PCA from sklearn.pipeline import Pipeline import matplotlib.pyplot as plt newsgroups_train = fetch_20newsgroups(subset='train', categories=['alt.atheism', 'sci.space']) pipeline = Pipeline([ ('vect', CountVectorizer()), ('tfidf', TfidfTransformer()), ]) X = pipeline.fit_transform(newsgroups_train.data).todense() pca = PCA(n_components=2).fit(X) data2D = pca.transform(X) plt.scatter(data2D[:,0], data2D[:,1], c=data.target) plt.show() #not required if using ipython notebook 

data2d

Ahora, por ejemplo, puede calcular y trazar las entradas de clúster en estos datos:

 from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=2).fit(X) centers2D = pca.transform(kmeans.cluster_centers_) plt.hold(True) plt.scatter(centers2D[:,0], centers2D[:,1], marker='x', s=200, linewidths=3, c='r') plt.show() #not required if using ipython notebook 

introduzca la descripción de la imagen aquí

Simplemente asigne una variable a las tags y utilícela para indicar el color. ex km = Kmeans().fit(X) clusters = km.labels_.tolist() luego c=clusters