adjusted_rand_score#
- sklearn.metrics.adjusted_rand_score(labels_true, labels_pred)[Quelle]#
Durch den Zufall angepasster Rand-Index.
Der Rand-Index berechnet ein Ähnlichkeitsmaß zwischen zwei Clusterings, indem alle Stichprobenpaare betrachtet und Paare gezählt werden, die in den vorhergesagten und wahren Clusterings im selben oder in unterschiedlichen Clustern zugewiesen sind.
Der rohe RI-Wert wird dann mithilfe des folgenden Schemas "zufallsbereinigt" zum ARI-Wert
ARI = (RI - Expected_RI) / (max(RI) - Expected_RI)
Der bereinigte Randindex hat somit sicher einen Wert nahe 0,0 für zufällige Beschriftungen unabhängig von der Anzahl der Cluster und Stichproben und exakt 1,0, wenn die Clusterings identisch sind (bis auf eine Permutation). Der bereinigte Randindex ist nach unten durch -0,5 für besonders diskordante Clusterings begrenzt.
ARI ist ein symmetrisches Maß
adjusted_rand_score(a, b) == adjusted_rand_score(b, a)
Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- labels_truearray-ähnlich der Form (n_samples,), dtype=int
Wahre Klassenlabels als Referenz.
- labels_predarray-ähnlich der Form (n_samples,), dtype=int
Zu bewertende Clusterlabels.
- Gibt zurück:
- ARIfloat
Ähnlichkeitswert zwischen -0,5 und 1,0. Zufällige Beschriftungen haben einen ARI nahe 0,0. 1,0 steht für perfekte Übereinstimmung.
Siehe auch
adjusted_mutual_info_scoreBereinigte gegenseitige Information.
Referenzen
[Hubert1985]L. Hubert und P. Arabie, Comparing Partitions, Journal of Classification 1985 https://link.springer.com/article/10.1007%2FBF01908075
[Steinley2004]D. Steinley, Properties of the Hubert-Arabie adjusted Rand index, Psychological Methods 2004
Beispiele
Perfekt übereinstimmende Beschriftungen haben auch dann einen Score von 1,
>>> from sklearn.metrics.cluster import adjusted_rand_score >>> adjusted_rand_score([0, 0, 1, 1], [0, 0, 1, 1]) 1.0 >>> adjusted_rand_score([0, 0, 1, 1], [1, 1, 0, 0]) 1.0
Beschriftungen, die alle Klassenmitglieder demselben Cluster zuweisen, sind vollständig, aber möglicherweise nicht immer rein, daher werden sie bestraft.
>>> adjusted_rand_score([0, 0, 1, 2], [0, 0, 1, 1]) 0.57
ARI ist symmetrisch, daher werden Beschriftungen, die reine Cluster mit Mitgliedern aus denselben Klassen haben, aber unnötige Unterteilungen, bestraft.
>>> adjusted_rand_score([0, 0, 1, 1], [0, 0, 1, 2]) 0.57
Wenn Klassenmitglieder vollständig über verschiedene Cluster verteilt sind, ist die Zuweisung völlig unvollständig, daher ist der ARI sehr niedrig.
>>> adjusted_rand_score([0, 0, 0, 0], [0, 1, 2, 3]) 0.0
ARI kann für besonders diskordante Beschriftungen einen negativen Wert annehmen, die eine schlechtere Wahl darstellen als der erwartete Wert zufälliger Beschriftungen.
>>> adjusted_rand_score([0, 0, 1, 1], [0, 1, 0, 1]) -0.5
Siehe Anpassung an Zufall bei der Bewertung der Clustering-Leistung für ein detaillierteres Beispiel.
Galeriebeispiele#
Anpassung für Zufälligkeit in der Clusterleistungsbewertung
Demo des Affinity Propagation Clustering Algorithmus
Eine Demo des K-Means Clusterings auf den handschriftlichen Zifferndaten