亲和力传播#

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

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

更多信息请参见 用户指南

参数:
Sarray-like of shape (n_samples, n_samples)

点之间相似度的矩阵。

preferencearray-like of shape (n_samples,) 或 float, default=None

每个点的偏好 - 偏好值较大的点更有可能被选为样本点。样本点的数量,即聚类的数量,受输入偏好值的影响。如果偏好值不是作为参数传入,则将其设置为输入相似度的中位数(导致中等数量的聚类)。对于较少数量的聚类,这可以设置为相似度的最小值。

convergence_iterint, default=15

估计聚类数量没有变化的迭代次数,用于停止收敛。

max_iterint, default=200

最大迭代次数。

dampingfloat, default=0.5

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

copybool, default=True

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

verbosebool, default=False

详细程度。

return_n_iterbool, default=False

是否返回迭代次数。

random_stateint, RandomState 实例或 None, default=None

伪随机数生成器,用于控制初始状态。使用整数可在函数调用之间获得可重复的结果。参见 词汇表

0.23 版本的新功能: 此参数以前硬编码为 0。

返回值:
cluster_centers_indicesndarray of shape (n_clusters,)

聚类中心的索引。

labelsndarray of shape (n_samples,)

每个点的聚类标签。

n_iterint

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

注释

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

当算法不收敛时,如果存在任何样本点/聚类,它仍然会返回 cluster_center_indices 和标签的数组,但是它们可能是退化的,应该谨慎使用。

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

参考文献

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

示例

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