affinity_propagation#

sklearn.cluster.affinity_propagation(S, *, предпочтение=None, convergence_iter=15, max_iter=200, damping=0.5, copy=True, verbose=False, return_n_iter=False, random_state=None)[источник]#

Выполнить кластеризацию данных методом распространения близости.

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

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

Матрица сходства между точками.

предпочтениеarray-like формы (n_samples,) или float, по умолчанию=None

Предпочтения для каждой точки - точки с большими значениями предпочтений с большей вероятностью будут выбраны в качестве экземпляров. Количество экземпляров, т.е. кластеров, зависит от значения входных предпочтений. Если предпочтения не переданы в качестве аргументов, они будут установлены в медиану входных сходств (что приводит к умеренному количеству кластеров). Для меньшего количества кластеров это можно установить в минимальное значение сходств.

convergence_iterint, default=15

Количество итераций без изменения числа оцененных кластеров, которое останавливает сходимость.

max_iterint, default=200

Максимальное количество итераций.

dampingfloat, по умолчанию=0.5

Коэффициент демпфирования между 0.5 и 1.

copybool, по умолчанию=True

Если copy=False, матрица сходства изменяется алгоритмом на месте для эффективности памяти.

verbosebool, по умолчанию=False

Уровень подробности вывода.

return_n_iterbool, по умолчанию=False

Возвращать или нет количество итераций.

random_stateint, экземпляр RandomState или None, по умолчанию=None

Псевдослучайный генератор чисел для управления начальным состоянием. Используйте целое число для воспроизводимых результатов между вызовами функций. См. Глоссарий.

Добавлено в версии 0.23: этот параметр ранее был жестко задан как 0.

Возвращает:
cluster_centers_indicesndarray формы (n_clusters,)

Индекс центров кластеров.

меткиndarray формы (n_samples,)

Метки кластеров для каждой точки.

n_iterint

Количество выполненных итераций. Возвращается только если return_n_iter установлено в True.

Примечания

Пример использования см. в Демонстрация алгоритма кластеризации с распространением аффинности. Вы также можете ознакомиться с Визуализация структуры фондового рынка

Когда алгоритм не сходится, он все равно возвращает массив cluster_center_indices и метки, если есть какие-либо экземпляры/кластеры, однако они могут быть вырожденными и должны использоваться с осторожностью.

Когда все обучающие выборки имеют одинаковые сходства и одинаковые предпочтения, назначение центров кластеров и меток зависит от предпочтения. Если предпочтение меньше, чем сходства, один центр кластера и метка 0 для каждого образца будет возвращено. В противном случае каждый обучающий образец становится собственным центром кластера и получает уникальную метку.

Ссылки

Brendan J. Frey и Delbert Dueck, “Clustering by Passing Messages Between Data Points”, Science Feb. 2007

Примеры

>>> import numpy as np
>>> from sklearn.cluster import affinity_propagation
>>> from sklearn.metrics.pairwise import euclidean_distances
>>> X = np.array([[1, 2], [1, 4], [1, 0],
...               [4, 2], [4, 4], [4, 0]])
>>> S = -euclidean_distances(X, squared=True)
>>> cluster_centers_indices, labels = affinity_propagation(S, random_state=0)
>>> cluster_centers_indices
array([0, 3])
>>> labels
array([0, 0, 0, 1, 1, 1])