Normalerweise, wenn ich Dendrogramme und Heatmaps mache, verwende ich eine Distanzmatrix und mache einen Haufen SciPy
Zeug. Ich möchte Seaborn
ausprobieren, aber Seaborn
möchte meine Daten in rechteckiger Form (Zeilen = Proben, Spalten = Attribute, keine Abstandsmatrix)?Wie kann sns.clustermap eine vorberechnete Abstandsmatrix erhalten?
Ich möchte im Wesentlichen seaborn
als Backend verwenden, um mein Dendrogramm zu berechnen und es auf meine Heatmap zu heften. Ist das möglich? Wenn nicht, kann dies ein Feature in der Zukunft sein.
Vielleicht gibt es Parameter, die ich einstellen kann, damit es eine Abstandsmatrix anstelle einer rechteckigen Matrix nehmen kann?
Hier ist die Nutzung:
seaborn.clustermap¶
seaborn.clustermap(data, pivot_kws=None, method='average', metric='euclidean',
z_score=None, standard_scale=None, figsize=None, cbar_kws=None, row_cluster=True,
col_cluster=True, row_linkage=None, col_linkage=None, row_colors=None,
col_colors=None, mask=None, **kwargs)
Mein Code unten:
from sklearn.datasets import load_iris
iris = load_iris()
X, y = iris.data, iris.target
DF = pd.DataFrame(X, index = ["iris_%d" % (i) for i in range(X.shape[0])], columns = iris.feature_names)
Ich glaube nicht meine Methode unten korrekt ist, weil ich gebe es eine vorberechnete Abstandsmatrix und NICHT eine rechteckige Datenmatrix, wie sie anfordert. Es gibt keine Beispiele für die Verwendung einer Korrelations-/Abstandsmatrix mit clustermap
, aber es gibt https://stanford.edu/~mwaskom/software/seaborn/examples/network_correlations.html, aber die Reihenfolge ist nicht mit der einfachen sns.heatmap
-Funktion gruppiert.
DF_corr = DF.T.corr()
DF_dism = 1 - DF_corr
sns.clustermap(DF_dism)
Ich bin mir nicht sicher, ob ich die Frage verstehe. Ist die zweite Matrix nicht quadratisch? – mwaskom
Ja, die zweite ist definitiv quadratisch, aber es ist b/c Ich fütterte es eine Abstandsmatrix (1 - Korrelation), während "sns.cluster_map" die rechteckige Datenmatrix benötigt. Also im Grunde nahm es meine redundante Quadratdistanz-Matrix, behandelte sie als Rohwerte, und machte dann Verknüpfung daraus. Funktioniert das mathematisch? Es scheint nicht sinnvoll zu sein, da die Eingabe eine rechteckige Datenmatrix erfordert und ich denke, dass bestimmte Schritte wiederholt werden. –
Ich denke, Sie müssen die Frage bearbeiten, um klarer zu machen, was Sie wissen möchten. Wie Sie geschrieben haben, fragen Sie, wie Sie eine quadratische Matrix erstellen, und Sie zeigen eine Darstellung, die eine quadratische Matrix ist. – mwaskom