Sto utilizzando lo seaborn clustermap
per creare cluster e visivamente funziona perfettamente (questo example produce risultati molto simili).Estrazione di cluster da clustermap Seaborn
Tuttavia, ho difficoltà a capire come estrarre i cluster a livello di programmazione. Ad esempio, nel link di esempio, come ho potuto scoprire che 1-1 rh, 1-1 lh, 5-1 rh, 5-1 lh sono un buon cluster? Visivamente è facile. Sto cercando di utilizzare metodi di guardare attraverso i dati, e dendrogrammi ma sto avendo poco successo
EDIT Codice da esempio:
import pandas as pd
import seaborn as sns
sns.set(font="monospace")
df = sns.load_dataset("brain_networks", header=[0, 1, 2], index_col=0)
used_networks = [1, 5, 6, 7, 8, 11, 12, 13, 16, 17]
used_columns = (df.columns.get_level_values("network")
.astype(int)
.isin(used_networks))
df = df.loc[:, used_columns]
network_pal = sns.cubehelix_palette(len(used_networks),
light=.9, dark=.1, reverse=True,
start=1, rot=-2)
network_lut = dict(zip(map(str, used_networks), network_pal))
networks = df.columns.get_level_values("network")
network_colors = pd.Series(networks).map(network_lut)
cmap = sns.diverging_palette(h_neg=210, h_pos=350, s=90, l=30, as_cmap=True)
result = sns.clustermap(df.corr(), row_colors=network_colors, method="average",
col_colors=network_colors, figsize=(13, 13), cmap=cmap)
Come posso tirare quali modelli sono in quali cluster out di result
?
EDIT2 Il result
non porta con sé un linkage
con la dendrogram_col
che credo avrebbe lavorato con fcluster. Ma il valore di soglia per selezionare questo mi confonde. Immagino che i valori nella heatmap superiore alla soglia vengano raggruppati insieme?
Ehi @Marcel M, non vorresti usare una "matrice di dissimilarità" invece di una matrice di correlazione? Come '1 - np.abs (correlazioni)' o qualcosa del genere? –
@ O.rka Il passaggio delle correlazioni a 'sns.clustermap()' deriva dall'esempio riportato nella domanda, che ho appena copiato. Entrambe le versioni calcolano le distanze tra le correlazioni, quindi alla fine vengono effettivamente utilizzate le distanze, ma ammetto di non sapere quanto senso faccia a farlo (non so perché l'esempio di Seaborn lo faccia). Nel mio progetto, utilizzo direttamente le distanze. –