non riesco a Seam di trovare alcun tutorial abbastanza semplici o descrizioni sul clustering in SciPy, quindi cercherò di spiegare il mio problema:Clustering con SciPy - cluster tramite matrice delle distanze, come tornare gli oggetti originali
Cerco di raggruppare i documenti (clustering gerarchico agglomerato) e ho creato un vettore per ogni documento e prodotto una matrice di distanza simmetrica. La vector_list contiene vettori (molto lunghi) che rappresentano ciascun documento. L'ordine di questo elenco di vettori è lo stesso del mio elenco di documenti di input in modo che (si spera) potrò abbinare i risultati del clustering con il documento corrispondente.
distances = distance.cdist(vector_list, vector_list, 'euclidean')
Questo dà una matrice come questo, dove la linea diagonale è ciascun documenti distanza a se stesso (sempre 0)
[0 5 4]
[5 0 4]
[5 4 0]
nutro questa matrice distanza linkage scipys' funzione().
restituisce qualcosa che non sono sicuro di cosa sia, ma viene visualizzato come tipo di dati numpy.ndarray. Secondo i documenti, posso nutrirlo nuovamente in fcluster per ottenere "ammassi piatti". Io uso la metà della distanza massima nella matrice della distanza come soglia.
idx = hier.fcluster(clu,0.5*distances.max(), 'distance')
Questo restituisce un numpy.ndarray che ancora non ha molto senso per me. Un esempio è [6 3 1 7 1 8 9 4 5 2]
Quindi la mia domanda: che cosa è che ricevo dalla legame e fcluster funzioni, e come posso passare da lì e tornare a il mio documento che ho creato per prima cosa la matrice della distanza, per vedere se i cluster hanno senso? Lo sto facendo bene?
1. Quindi il mio utilizzo di cdist e linkage è ridondante se utilizzo fclusterdata .. l'input che alimento cdist (vector_list) è una lunga lista di vettori di conteggio parole in cui ogni riga è il testo comparato rispetto al vocabolario completo del documento collezione. Quando dici che posso nutrire fculsterdata 'qualunque siano le mie caratteristiche' in un (n_documenti, n_features), intendi una dict ala (document_id: vector) ad es. (1: [0,0,0,1,0,2,0 ])? – Eiriks
2. Come puoi vedere che il terzo e il quinto documento sono raggruppati insieme nell'elenco [6 3 1 7 1 8 9 4 5 2]? Quello che voglio fare è sapere quanti cluster ho, quanto è grande ciascun cluster, quali sono i testi in ogni cluster e qual è il centeroide di ogni cluster. Non riesco a vedere come l'array T mi porta lì. L'i in T [i] mi dice solo dove si trova in T i, è solo un riferimento a uno dei numeri [6 3 1 7 1 8 9 4 5 2]? – Eiriks
@Eiriks: 1. si. Per caratteristiche, intendo valori numerici. 2.Il terzo e il quinto elemento (1-indicizzati) di quella lista hanno lo stesso valore. I valori nell'elenco sono numeri di cluster. –