/ / Errore di matrice della matrice di collegamento: impostazione di un elemento di matrice con una sequenza: python, matrici, numpy, matrice, clustering gerarchico

Errore del valore della matrice di collegamento: impostazione di un elemento dell'array con una sequenza: python, array, numpy, matrice, clustering gerarchico

inserisci la descrizione dell'immagine quiSto usando Python, numpy e scipy per fare un clustering gerarchico sull'output di un modello di argomento che ho creato per l'analisi del testo.

Ho applicato il mio testcorpus a ldamodel cosìdivenne una rappresentazione bag-of-words. Quindi l'ho trasformato in una matrice. Ora voglio usare scipy per creare una matrice di linkage della mia matrice. Ma dà l'errore di valore: l'impostazione di un elemento di matrice con una sequenza. Immagino che questo sia dovuto al fatto che solo gli array di uguale forma possono essere raggruppati. E la mia matrice ha una differenza di lunghezza tra le liste all'interno della lista di liste. Semplicemente non so come risolvere questo. Ecco una piccola parte del codice. Non so se è utile, spero solo che qualcuno possa aiutarmi.

  import numpy as np
X = np.array(corpus)
from matplotlib import pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
Z = linkage(X, "cosine")

risposte:

1 per risposta № 1

Come hai detto di prendere la matrice X dal modello lda, potrebbe essere una matrice sparsa di qualche tipo. Puoi convertire in matrice densa di X.todense() e applicare il linkage metodo.Se la matrice è troppo grande per contenere la memoria che si può fare Z=linkage(X.todense(),distance="cosine").

In alcuni casi, cambiando il dtype di matrice aiuta.

P.S: Anch'io ho affrontato lo stesso problema e convertendo la mia sparse feature matrix (scipy.sparse.csr matrix) in densa soluzione del problema.