Ich verwende die seaborn clustermap
Cluster zu erstellen und visuell funktioniert es gut (diese example produziert sehr ähnliche Ergebnisse).Extrahieren von Clustern von Seaborn Clustermap
Allerdings habe ich Probleme herauszufinden, wie Sie die Cluster programmgesteuert extrahieren. Wie könnte ich zum Beispiel im Beispiel-Link herausfinden, dass 1-1 rh, 1-1 lh, 5-1 rh, 5-1 lh einen guten Cluster bilden? Visuell ist es einfach. Ich versuche, Methoden des Blicks durch die Daten zu verwenden, und Dendrogramme aber ich habe wenig Erfolg
EDIT-Code aus Beispiel:
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)
Wie kann ich ziehen, welche Modelle sind in welchen Cluster aus von result
?
EDIT2 Die result
hat mit ihm trägt ein linkage
in den dendrogram_col
, die ich mit fcluster funktionieren würde denken. Aber der Schwellwert zur Auswahl, der mich verwirrt. Ich würde annehmen, dass Werte in der Heatmap, die höher als der Schwellenwert sind, zusammen gruppiert werden würden?
Hey @Marcel M, möchten Sie nicht eine "Unähnlichkeitsmatrix" anstelle einer Korrelationsmatrix verwenden? Wie '1 - np.abs (Korrelationen)' oder etwas? –
@ O.rka Das Übergeben von Korrelationen an "sns.clustermap()" kommt von dem Seaborn-Beispiel, das in der Frage zitiert wird, die ich gerade kopiert habe. Beide Versionen berechnen Distanzen zwischen Korrelationen, also werden am Ende tatsächlich Distanzen verwendet, aber ich gebe zu, ich weiß nicht, wie viel Sinn es dazu macht (ich weiß nicht, warum das Seaborn-Beispiel so ist). In meinem eigenen Projekt verwende ich Entfernungen direkt. –