cophenet#
- scipy.cluster.hierarchy.cophenet(Z, Y=None)[Quelle]#
Berechnet die kophentischen Abstände zwischen jeder Beobachtung in der hierarchischen Clusterbildung, die durch die Verknüpfung
Zdefiniert ist.Angenommen,
pundqsind ursprüngliche Beobachtungen in disjunkten Clusternsundt, bzw. undsundtwerden durch einen direkten Elternclusteruverbunden. Der kophentische Abstand zwischen den Beobachtungeniundjist einfach der Abstand zwischen den Clusternsundt.- Parameter:
- Zndarray
Die hierarchische Clusterbildung, kodiert als Array (siehe Funktion
linkage).- Yndarray (optional)
Berechnet den kophentischen Korrelationskoeffizienten
ceiner hierarchischen Clusterbildung, die durch die Verknüpfungsmatrix Z eines Satzes von \(n\) Beobachtungen in \(m\) Dimensionen definiert ist. Y ist die kondensierte Distanzmatrix, aus der Z generiert wurde.
- Rückgabe:
- cndarray
Der kophentische Korrelationsabstand (wenn
Yübergeben wird).- dndarray
Die kophentische Distanzmatrix in kondensierter Form. Der \(ij\)-te Eintrag ist der kophentische Abstand zwischen den ursprünglichen Beobachtungen \(i\) und \(j\).
Siehe auch
linkagefür eine Beschreibung, was eine Linkage-Matrix ist.
scipy.spatial.distance.squareformUmwandlung von kondensierten Matrizen in quadratische.
Hinweise
cophenetverfügt über experimentelle Unterstützung für Backends, die dem Python Array API Standard entsprechen, zusätzlich zu NumPy. Bitte erwägen Sie, diese Funktionen zu testen, indem Sie die UmgebungsvariableSCIPY_ARRAY_API=1setzen und CuPy-, PyTorch-, JAX- oder Dask-Arrays als Array-Argumente bereitstellen. Die folgenden Kombinationen aus Backend und Gerät (oder anderer Fähigkeit) werden unterstützt.Bibliothek
CPU
GPU
NumPy
✅
n/a
CuPy
n/a
⛔
PyTorch
✅
⛔
JAX
✅
⛔
Dask
⚠️ führt Chunks zusammen
n/a
Siehe Unterstützung für den Array API Standard für weitere Informationen.
Beispiele
>>> from scipy.cluster.hierarchy import single, cophenet >>> from scipy.spatial.distance import pdist, squareform
Gegeben ein Datensatz
Xund eine VerknüpfungsmatrixZ, ist der kophentische Abstand zwischen zwei Punkten vonXder Abstand zwischen den beiden größten unterschiedlichen Clustern, zu denen jeder der Punkte>>> X = [[0, 0], [0, 1], [1, 0], ... [0, 4], [0, 3], [1, 4], ... [4, 0], [3, 0], [4, 1], ... [4, 4], [3, 4], [4, 3]]
Xentspricht diesem Datensatzx x x x x x x x x x x x
>>> Z = single(pdist(X)) >>> Z array([[ 0., 1., 1., 2.], [ 2., 12., 1., 3.], [ 3., 4., 1., 2.], [ 5., 14., 1., 3.], [ 6., 7., 1., 2.], [ 8., 16., 1., 3.], [ 9., 10., 1., 2.], [11., 18., 1., 3.], [13., 15., 2., 6.], [17., 20., 2., 9.], [19., 21., 2., 12.]]) >>> cophenet(Z) array([1., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 1., 1., 2., 2., 2., 2., 2., 2., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 1., 1., 2., 2., 2., 1., 2., 2., 2., 2., 2., 2., 1., 1., 1.])
Die Ausgabe der Methode
scipy.cluster.hierarchy.cophenetwird in kondensierter Form dargestellt. Wir könnenscipy.spatial.distance.squareformverwenden, um die Ausgabe als reguläre Matrix anzuzeigen (wobei jedes Elementijden kophentischen Abstand zwischen jedemi,j-Paar von Punkten inXbezeichnet)>>> squareform(cophenet(Z)) array([[0., 1., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2.], [1., 0., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2.], [1., 1., 0., 2., 2., 2., 2., 2., 2., 2., 2., 2.], [2., 2., 2., 0., 1., 1., 2., 2., 2., 2., 2., 2.], [2., 2., 2., 1., 0., 1., 2., 2., 2., 2., 2., 2.], [2., 2., 2., 1., 1., 0., 2., 2., 2., 2., 2., 2.], [2., 2., 2., 2., 2., 2., 0., 1., 1., 2., 2., 2.], [2., 2., 2., 2., 2., 2., 1., 0., 1., 2., 2., 2.], [2., 2., 2., 2., 2., 2., 1., 1., 0., 2., 2., 2.], [2., 2., 2., 2., 2., 2., 2., 2., 2., 0., 1., 1.], [2., 2., 2., 2., 2., 2., 2., 2., 2., 1., 0., 1.], [2., 2., 2., 2., 2., 2., 2., 2., 2., 1., 1., 0.]])
In diesem Beispiel beträgt der kophentische Abstand zwischen Punkten auf
X, die sehr nahe beieinander liegen (d. h. in derselben Ecke), 1. Für andere Punktpaare beträgt er 2, da die Punkte in Clustern in verschiedenen Ecken liegen – daher ist der Abstand zwischen diesen Clustern größer.