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 № 1Come 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.