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