亲和力传播#
- 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])
图库示例#
股票市场结构可视化