adjusted_rand_score
- sklearn.metrics.adjusted_rand_score(labels_true, labels_pred)[исходный код]
-
Индекс Rand с поправкой на случайность.
Индекс Rand вычисляет меру сходства между двумя кластеризациями, рассматривая все пары объектов и подсчитывая пары, отнесённые к одним и тем же или разным кластерам в предсказанной и истинной кластеризациях.
Затем исходная оценка RI корректируется «на случайность» и преобразуется в оценку ARI по следующей схеме:
ARI = (RI - Expected_RI) / (max(RI) - Expected_RI)
Таким образом, индекс Rand с поправкой гарантированно принимает значение, близкое к 0.0, при случайной разметке независимо от числа кластеров и объектов, и ровно 1.0, если кластеризации идентичны (с точностью до перестановки). Для особенно несогласованных кластеризаций индекс Rand с поправкой ограничен снизу значением -0.5.
ARI — симметричная мера:
adjusted_rand_score(a, b) == adjusted_rand_score(b, a)
Подробнее см. в Руководстве пользователя.
- Параметры:
-
- labels_trueмассивоподобный объект формы (n_samples,)
-
Истинные метки классов, используемые в качестве эталона.
- labels_predмассивоподобный объект формы (n_samples,)
-
Метки кластеров для оценки.
- Возвращает:
-
- ARIчисло с плавающей точкой
-
Оценка сходства от -0.5 до 1.0. При случайной разметке значение ARI близко к 0.0. Значение 1.0 означает идеальное совпадение.
См. также
adjusted_mutual_info_score-
Взаимная информация с поправкой.
Литература
[Hubert1985]L. Hubert и P. Arabie, «Сравнение разбиений», Journal of Classification, 1985 https://link.springer.com/article/10.1007%2FBF01908075
[Steinley2004]D. Steinley, «Свойства индекса Rand с поправкой Hubert–Arabie», Psychological Methods, 2004
Примеры
Идеально совпадающая разметка получает оценку 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
Разметка, относящая все объекты классов к одним и тем же кластерам, является полной, но не всегда чистой, поэтому получает штраф:
>>> adjusted_rand_score([0, 0, 1, 2], [0, 0, 1, 1]) 0.57
ARI симметричен, поэтому разметка с чистыми кластерами, содержащими объекты из одних и тех же классов, но с избыточным разделением на кластеры, получает штраф:
>>> adjusted_rand_score([0, 0, 1, 1], [0, 0, 1, 2]) 0.57
Если объекты классов полностью распределены по разным кластерам, разбиение совершенно неполное, поэтому значение ARI очень низкое:
>>> adjusted_rand_score([0, 0, 0, 0], [0, 1, 2, 3]) 0.0
Для особенно несогласованной разметки ARI может принимать отрицательное значение, если она хуже ожидаемого результата для случайных меток:
>>> adjusted_rand_score([0, 0, 1, 1], [0, 1, 0, 1]) -0.5
Более подробный пример см. в разделе Поправка на случайность при оценке качества кластеризации.
Примеры в галерее
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.metrics.adjusted_rand_score.html