Spec-Zone.ru › scikit-learn

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

[wk]

https://en.wikipedia.org/wiki/Rand_index#Adjusted_Rand_index

[Chacon]

Минимальный индекс Rand с поправкой для двух кластеризаций заданного размера, 2022, J. E. Chacón и A. I. Rastrojo

Примеры

Идеально совпадающая разметка получает оценку 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

Более подробный пример см. в разделе Поправка на случайность при оценке качества кластеризации.

Примеры в галерее

Поправка на случайность при оценке качества кластеризации

Демонстрация алгоритма кластеризации распространением близости

Демонстрация алгоритма кластеризации DBSCAN

Демонстрация кластеризации рукописных цифр методом K-Means

Кластеризация текстовых документов методом k-means

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API