fcluster#
- scipy.cluster.hierarchy.fcluster(Z, t, criterion='inconsistent', depth=2, R=None, monocrit=None)[Quelle]#
Flache Cluster aus der hierarchischen Clusterbildung aus der gegebenen Linkagematrix bilden.
- Parameter:
- Zndarray
Die hierarchische Clusterbildung, die durch die von der Funktion
linkagezurückgegebene Matrix kodiert ist.- tSkalar
- Für die Kriterien 'inconsistent', 'distance' oder 'monocrit' ist dies der Schwellenwert, der bei der Bildung von flachen Clustern angewendet wird.
dies ist der zu verwendende Schwellenwert bei der Bildung von flachen Clustern.
- Für die Kriterien 'maxclust' oder 'maxclust_monocrit' ist dies die maximale Anzahl der angeforderten Cluster.
dies wäre die maximal angeforderte Anzahl von Clustern.
- criterionstr, optional
Das Kriterium, das bei der Bildung von flachen Clustern verwendet wird. Dies kann einer der folgenden Werte sein:
inconsistent:Wenn ein Clusterknoten und alle seine Nachfolger einen Inkonsistenzwert kleiner oder gleich t haben, gehören alle seine Blatt-Nachfolger zum selben flachen Cluster. Wenn kein nicht-einzelner Cluster dieses Kriterium erfüllt, wird jeder Knoten seinem eigenen Cluster zugewiesen. (Standard)
distance:Bildet flache Cluster, so dass die ursprünglichen Beobachtungen in jedem flachen Cluster keine größere kophenetische Distanz als t haben.
maxclust:Findet einen minimalen Schwellenwert
r, so dass die kophenetische Distanz zwischen zwei beliebigen ursprünglichen Beobachtungen im selben flachen Cluster nicht mehr alsrbeträgt und nicht mehr als t flache Cluster gebildet werden.monocrit:Bildet einen flachen Cluster aus einem Clusterknoten c mit Index i, wenn
monocrit[j] <= t.Um beispielsweise auf die maximale mittlere Entfernung, wie in der Inkonsistenzmatrix R berechnet, mit einem Schwellenwert von 0,8 zu schwellen, machen Sie
MR = maxRstat(Z, R, 3) fcluster(Z, t=0.8, criterion='monocrit', monocrit=MR)
maxclust_monocrit:Bildet einen flachen Cluster aus einem nicht-einzelnen Clusterknoten
c, wennmonocrit[i] <= rfür alle Clusterindizesiunter und einschließlichcgilt.rwird minimiert, so dass nicht mehr alstflache Cluster gebildet werden. monocrit muss monoton sein. Um beispielsweise den Schwellenwert t für maximale Inkonsistenzwerte zu minimieren, so dass nicht mehr als 3 flache Cluster gebildet werden, machen SieMI = maxinconsts(Z, R) fcluster(Z, t=3, criterion='maxclust_monocrit', monocrit=MI)
- depthint, optional
Die maximale Tiefe, bis zu der die Inkonsistenzberechnung durchgeführt werden soll. Sie hat keine Bedeutung für die anderen Kriterien. Standard ist 2.
- Rndarray, optional
Die Inkonsistenzmatrix, die für das Kriterium 'inconsistent' verwendet werden soll. Diese Matrix wird berechnet, wenn sie nicht bereitgestellt wird.
- monocritndarray, optional
Ein Array der Länge n-1. monocrit[i] ist die Statistik, auf deren Grundlage der nicht-einzelne Knoten i geschwellt wird. Der monocrit-Vektor muss monoton sein, d.h. gegeben einen Knoten c mit Index i, für alle Knotenindizes j, die Knoten unterhalb von c entsprechen, gilt
monocrit[i] >= monocrit[j].
- Rückgabe:
- fclusterndarray
Ein Array der Länge
n.T[i]ist die Nummer des flachen Clusters, zu dem die ursprüngliche Beobachtungigehört.
Siehe auch
linkagefür Informationen über die Funktionsweise hierarchischer Clusterbildungsmethoden.
Hinweise
fclusterbietet experimentelle Unterstützung für Python Array API Standard-kompatible Backends zusätzlich zu NumPy. Bitte erwägen Sie, diese Funktionen zu testen, indem Sie eine UmgebungsvariableSCIPY_ARRAY_API=1setzen und CuPy-, PyTorch-, JAX- oder Dask-Arrays als Array-Argumente übergeben. Die folgenden Kombinationen von Backend und Gerät (oder anderer Fähigkeit) werden unterstützt.Bibliothek
CPU
GPU
NumPy
✅
n/a
CuPy
n/a
⛔
PyTorch
✅
⛔
JAX
⚠️ kein JIT
⛔
Dask
⚠️ berechnet Graph
n/a
Siehe Unterstützung für den Array API Standard für weitere Informationen.
Beispiele
>>> from scipy.cluster.hierarchy import ward, fcluster >>> from scipy.spatial.distance import pdist
Alle Cluster-Linkage-Methoden - z. B.
scipy.cluster.hierarchy.wardgenerieren eine LinkagematrixZals Ausgabe.>>> 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]]
>>> Z = ward(pdist(X))
>>> Z array([[ 0. , 1. , 1. , 2. ], [ 3. , 4. , 1. , 2. ], [ 6. , 7. , 1. , 2. ], [ 9. , 10. , 1. , 2. ], [ 2. , 12. , 1.29099445, 3. ], [ 5. , 13. , 1.29099445, 3. ], [ 8. , 14. , 1.29099445, 3. ], [11. , 15. , 1.29099445, 3. ], [16. , 17. , 5.77350269, 6. ], [18. , 19. , 5.77350269, 6. ], [20. , 21. , 8.16496581, 12. ]])
Diese Matrix stellt ein Dendrogramm dar, wobei das erste und zweite Element die beiden Cluster sind, die bei jedem Schritt zusammengeführt wurden, das dritte Element die Distanz zwischen diesen Clustern und das vierte Element die Größe des neuen Clusters ist - die Anzahl der enthaltenen ursprünglichen Datenpunkte.
scipy.cluster.hierarchy.fclusterkann verwendet werden, um das Dendrogramm zu glätten und als Ergebnis eine Zuweisung der ursprünglichen Datenpunkte zu einzelnen Clustern zu erhalten.Diese Zuweisung hängt hauptsächlich von einem Distanzschwellenwert
tab - der maximal zulässigen Distanz zwischen Clustern.>>> fcluster(Z, t=0.9, criterion='distance') array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], dtype=int32)
>>> fcluster(Z, t=1.1, criterion='distance') array([1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8], dtype=int32)
>>> fcluster(Z, t=3, criterion='distance') array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4], dtype=int32)
>>> fcluster(Z, t=9, criterion='distance') array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int32)
Im ersten Fall ist der Schwellenwert
tzu klein, um es zwei Stichproben in den Daten zu ermöglichen, einen Cluster zu bilden, daher werden 12 verschiedene Cluster zurückgegeben.Im zweiten Fall ist der Schwellenwert groß genug, um die ersten 4 Punkte mit ihren nächsten Nachbarn zusammenzuführen. Hier werden also nur 8 Cluster zurückgegeben.
Der dritte Fall mit einem viel höheren Schwellenwert erlaubt es, bis zu 8 Datenpunkte zu verbinden - hier werden also 4 Cluster zurückgegeben.
Schließlich ist der Schwellenwert des vierten Falls groß genug, um alle Datenpunkte zusammenzuführen - hier wird also ein einziger Cluster zurückgegeben.