parcela de un documento tfidf gráfico 2D

Me gustaría representar en un gráfico 2d con el eje x como el plazo y el eje y como TFIDF puntuación (o documento de identificación) para mi lista de frases. He utilizado scikit aprender del fit_transform() para obtener el scipy de la matriz, pero no sé cómo usar la matriz para trazar la gráfica. Estoy tratando de conseguir un complot para ver cómo mis oraciones pueden ser clasificadas utilizando la kmeans.

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

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

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

Realiza las siguientes labores para usted? Debe ser si sólo estás buscando en un simple gráfico 2D. matplotlib.org/examples/pylab_examples/simple_plot.html

OriginalEl autor jxn | 2015-01-26

2 respuestas

  1. 24

    Cuando se utiliza la Bolsa de Palabras, cada una de sus frases obtiene representado en un espacio de alta dimensión de longitud igual a la de vocabulario. Si usted desea representar a esta en 2D que usted necesita para reducir la dimensión, por ejemplo, el uso de 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

    parcela de un documento tfidf gráfico 2D

    Ahora usted puede, por ejemplo, calcular y graficar el clúster entra en este tipo de 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

    parcela de un documento tfidf gráfico 2D

    puedo usar tfidfvectorizer en lugar de hacer countvectorizer luego tfidftransformer? Va el código para tubería de tener este aspecto: pipeline = Pipeline([('tfidf', TfidfVectorizer())])?
    me estoy poniendo un error para plt.scatter(data2D[:,0], data2D[:,1], c=data.target) específicamente c=data.target. Si quiero que los colores de los gráficos de dispersión para ajustarse a los colores de los clusters descubierto por kmeans, lo que se debe utilizar en lugar de data.target? kmeans.label_? #devuelve una lista.
    La Tubería se utiliza para ejecutar varios transformadores en serie. Si sólo tiene uno, usted no necesita la Tubería, sólo tiene que utilizar el transformador directamente.
    podría usted por favor, busque en esta pregunta stackoverflow.com/q/50334915/2508414

    OriginalEl autor elyase

  2. 0

    Acaba de asignar una variable a las etiquetas y el uso que para denotar color. ex
    km = Kmeans().fit(X)
    clusters = km.labels_.tolist()

    luego c=clusters

    OriginalEl autor beto

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *