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)[源]#

执行数据的亲和传播聚类。

用户指南中阅读更多内容。

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

点之间的相似性矩阵。

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

每个点的偏好值 - 偏好值较大的点更有可能被选作代表。代表(即簇)的数量受输入的偏好值影响。如果未将偏好值作为参数传入,它们将被设置为输入相似度矩阵的中位数(导致适中数量的簇)。对于较少数量的簇,此值可设置为相似度矩阵的最小值。

convergence_iter整数,默认为 15

估计簇数量在指定迭代次数内没有变化时停止收敛。

max_iter整数,默认为 200

最大迭代次数。

damping浮点数,默认为 0.5

介于 0.5 到 1 之间的阻尼因子。

copy布尔值,默认为 True

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

verbose布尔值,默认为 False

详细程度。

return_n_iter布尔值,默认为 False

是否返回迭代次数。

random_state整数、RandomState 实例或 None,默认为 None

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

0.23 版本新增:此参数之前硬编码为 0。

返回值:
cluster_centers_indicesndarray,形状为 (n_clusters,)

簇中心的索引。

labelsndarray,形状为 (n_samples,)

每个点的簇标签。

n_iter整数

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

备注

有关示例用法,请参阅亲和传播聚类算法演示。您也可以查看股票市场结构可视化

当算法不收敛时,如果存在任何代表/簇,它仍将返回 cluster_center_indices 和标签的数组,但这些数组可能是退化的,应谨慎使用。

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

参考资料

Brendan J. Frey and 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])