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)[source]#
执行数据的 Affinity Propagation 聚类。
阅读用户指南以了解更多信息。
- 参数:
- 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, 算法将就地修改亲和性矩阵, 以提高内存效率。
- verbosebool, default=False
详细程度。
- return_n_iterbool, default=False
是否返回迭代次数。
- random_stateint, RandomState instance or None, default=None
用于控制起始状态的伪随机数生成器。使用整数可以在函数调用之间获得可重现的结果。参见词汇表。
版本 0.23 新增: 此参数以前硬编码为 0。
- 返回:
- cluster_centers_indices形状为 (n_clusters,) 的 ndarray
聚类中心的索引。
- labelsndarray of shape (n_samples,)
每个点的聚类标签。
- n_iter整型
运行的迭代次数。仅当
return_n_iter设置为 True 时返回。
注意事项
有关用法示例, 请参阅亲和传播聚类算法演示。您也可以查看可视化股市结构
当算法不收敛时, 如果存在任何代表/聚类, 它仍将返回一个
cluster_center_indices和标签数组, 但它们可能是退化的, 应谨慎使用。当所有训练样本具有相同的相似性值和相同的偏好值时, 聚类中心和标签的分配取决于偏好值。如果偏好值小于相似性值, 则将返回一个聚类中心和所有样本的标签
0。否则, 每个训练样本都会成为其自己的聚类中心并被分配唯一的标签。References
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])