affinity_propagation#

sklearn.cluster.affinity_propagation(S, *, preference=None, convergence_iter=15, max_iter=200, damping=0.5, copy=True, verbose=False, return_n_iter=False, random_state=None)#

执行数据的自适应传播聚类。

更多信息请参阅 用户指南

Parameters:
S形状为 (n_samples, n_samples) 的类数组

点之间的相似度矩阵。

preference形状为 (n_samples,) 的类数组或浮点数, 默认=None

每个点的偏好 - 偏好值较大的点更有可能被选为示例。示例的数量,即聚类的数量,受输入偏好值的影响。如果未传递偏好参数,它们将设置为输入相似度的中位数(导致适度的聚类数量)。对于较少的聚类数量,可以将其设置为相似度的最小值。

convergence_iterint, 默认=15

在没有改变估计聚类数量的情况下停止收敛的迭代次数。

max_iterint, 默认=200

最大迭代次数。

dampingfloat, 默认=0.5

阻尼因子,介于 0.5 和 1 之间。

copybool, 默认=True

如果 copy 为 False,相似度矩阵将在原地由算法修改,以提高内存效率。

verbosebool, 默认=False

详细级别。

return_n_iterbool, 默认=False

是否返回迭代次数。

random_stateint, RandomState 实例或 None, 默认=None

伪随机数生成器,用于控制初始状态。使用 int 以在函数调用之间获得可重复的结果。请参阅 术语表

Added in version 0.23: 此参数之前硬编码为 0。

Returns:
cluster_centers_indices形状为 (n_clusters,) 的 ndarray

聚类中心的索引。

labels形状为 (n_samples,) 的 ndarray

每个点的聚类标签。

n_iterint

运行的迭代次数。仅当 return_n_iter 设置为 True 时返回。

Notes

有关示例,请参阅 examples/cluster/plot_affinity_propagation.py

当算法不收敛时,如果存在示例/聚类,它仍将返回 cluster_center_indices 和标签的数组,但它们可能是退化的,应谨慎使用。

当所有训练样本具有相等的相似度和相等的偏好时,聚类中心和标签的分配取决于偏好。如果偏好小于相似度,将返回一个单一的聚类中心和每个样本的标签 0 。否则,每个训练样本将成为其自己的聚类中心,并被分配一个唯一的标签。

References

Brendan J. Frey 和 Delbert Dueck,“通过数据点之间的传递消息进行聚类”,Science 2007 年 2 月

Examples

>>> 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])