v_measure_score#

sklearn.metrics.v_measure_score(labels_true, labels_pred, *, beta=1.0)[источник]#

V-мера кластеризации при заданной истинной разметке.

Эта оценка идентична normalized_mutual_info_score с 'arithmetic' опция для усреднения.

V-мера - это гармоническое среднее между однородностью и полнотой:

v = (1 + beta) * homogeneity * completeness
     / (beta * homogeneity + completeness)

Эта метрика не зависит от абсолютных значений меток: перестановка значений меток классов или кластеров не изменит значение оценки никаким образом.

Эта метрика также симметрична: переключение label_true с label_pred вернет то же значение оценки. Это может быть полезно для измерения согласованности двух независимых стратегий назначения меток на одном наборе данных, когда истинная основная истина неизвестна.

Подробнее в Руководство пользователя.

Параметры:
labels_truearray-like формы (n_samples,)

Истинные метки классов, используемые в качестве эталона.

labels_predarray-like формы (n_samples,)

Метки кластеров для оценки.

betafloat, по умолчанию=1.0

Отношение веса, приписываемого homogeneity против completeness. Если beta больше 1, completeness взвешивается более сильно в расчете. Если beta меньше 1, homogeneity взвешивается сильнее.

Возвращает:
v_measurefloat

Оценка от 0.0 до 1.0. 1.0 означает идеально полную маркировку.

Смотрите также

homogeneity_score

Метрика однородности кластерной разметки.

completeness_score

Метрика полноты маркировки кластеров.

normalized_mutual_info_score

Нормализованная взаимная информация.

Ссылки

Примеры

Идеальные разметки одновременно однородны и полны, поэтому имеют оценку 1.0:

>>> from sklearn.metrics.cluster import v_measure_score
>>> v_measure_score([0, 0, 1, 1], [0, 0, 1, 1])
1.0
>>> v_measure_score([0, 0, 1, 1], [1, 1, 0, 0])
1.0

Разметки, которые относят всех членов классов к одним и тем же кластерам, являются полными, но не однородными, поэтому штрафуются:

>>> print("%.6f" % v_measure_score([0, 0, 1, 2], [0, 0, 1, 1]))
0.8
>>> print("%.6f" % v_measure_score([0, 1, 2, 3], [0, 0, 1, 1]))
0.67

Разметки, имеющие чистые кластеры с элементами из одних и тех же классов, однородны, но ненужные разделения вредят полноте и, таким образом, также штрафуют V-меру:

>>> print("%.6f" % v_measure_score([0, 0, 1, 1], [0, 0, 1, 2]))
0.8
>>> print("%.6f" % v_measure_score([0, 0, 1, 1], [0, 1, 2, 3]))
0.67

Если элементы классов полностью разделены по разным кластерам, назначение полностью неполное, следовательно, V-мера равна нулю:

>>> print("%.6f" % v_measure_score([0, 0, 0, 0], [0, 1, 2, 3]))
0.0

Кластеры, включающие образцы из совершенно разных классов, полностью разрушают однородность маркировки, следовательно:

>>> print("%.6f" % v_measure_score([0, 0, 1, 1], [0, 0, 0, 0]))
0.0