sklearn.cluster.AffinityPropagation

class sklearn.cluster.AffinityPropagation(*, damping=0.5, max_iter=200, convergence_iter=15, copy=True, preference=None, affinity='euclidean', verbose=False, random_state='warn')

[源码]

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

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

参数 说明
damping float, default=0.5
阻尼系数(0.5到1之间)是当前值相对于传入值(加权1-阻尼)保持的程度。这是为了在更新这些值(消息)时避免数值振荡。
max_iter int, default=200
最大迭代次数
convergence_iter int, default=15
停止收敛时, 估计的聚类数目不再变化时的迭代次数
copy bool, default=True
做一个输入数据的副本
preference array-like of shape (n_samples,) or float, default=None
每个点的偏好值越大,就越有可能被选择作为样本。样本数,聚类的数目, 受输入偏好值的影响。如果偏好不是作为参数传递,它们将被设置为输入相似性的中位数。
affinity {‘euclidean’, ‘precomputed’}, default=’euclidean’
用哪种亲和。目前支持‘precomputed’和euclidean
‘euclidean’使用点之间的负平方欧几里德距离。
verbose bool, default=False
是否冗长
random_state int or np.random.RandomStateInstance, default: 0
伪随机数生成器控制起动状态。对跨函数调用的可重复结果使用int。See the Glossary

新版本0.23:此参数以前被硬编码为0。
属性 说明
cluster_centers_indices_ ndarray of shape (n_clusters,)
聚类中心的索引
cluster_centers_ ndarray of shape (n_clusters, n_features)
聚类中心(if affinity != precomputed)
labels_ ndarray of shape (n_samples,)
每个点的标签
affinity_matrix_ ndarray of shape (n_samples, n_samples)
储存在fit中使用的亲和矩阵。
n_iter_ int
用于收敛的迭代次数

注:

一个例子: examples/cluster/plot_affinity_propagation.py.

亲和传播的算法复杂度在点数上是二次型的。

fit不收敛时 cluster_centers_ 变成一个空数组,所有训练样本都被标记为-1。此外,预测将标记每个样本为-1。

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

参考

Brendan J. Frey and Delbert Dueck, “Clustering by Passing Messages Between Data Points”, Science Feb. 2007

示例

>>> from sklearn.cluster import AffinityPropagation
>>> import numpy as np
>>> X = np.array([[12], [14], [10],
...               [42], [44], [40]])
>>> clustering = AffinityPropagation(random_state=5).fit(X)
>>> clustering
AffinityPropagation(random_state=5)
>>> clustering.labels_
array([000111])
>>> clustering.predict([[00], [44]])
array([01])
>>> clustering.cluster_centers_
array([[12],
       [42]])

方法

方法 说明
fit(self, X[, y]) 根据特征或亲和矩阵对聚类进行拟合。
fit_predict(self, X[, y]) 根据特征或亲和矩阵对聚类进行拟合,并返回聚类标签。
get_params(self[, deep]) 获取此估计器的参数
predict(self, X) 预测X中每个样本所属的最接近的聚类
set_params(self, **params) 设置此估计器的参数
__init__(self, *, damping=0.5, max_iter=200, convergence_iter=15, copy=True, preference=None, affinity='euclidean', verbose=False, random_state='warn')

[源码]

初始化self。请参阅help(type(self))以获得准确的说明。

fit(self, X, y=None)

[源码]

根据特征或亲和矩阵进行聚类。

参数 说明
X array-like or sparse matrix, shape (n_samples, n_features), or array-like, shape (n_samples, n_samples)
对实例进行聚类训练,如果affinity='precomputed',训练实例之间的相似性/亲和关系。如果提供的是一个稀疏矩阵,将会收敛成csr_matrix
y Ignored
未使用,在此按约定呈现为API一致性。
返回值 说明
self -
fit_predict(self, X, y=None)

[源码]

根据特征或亲和矩阵对聚类进行拟合,并返回聚类标签。

参数 说明
X array-like or sparse matrix, shape (n_samples, n_features), or array-like, shape (n_samples, n_samples)
对实例进行聚类训练,如果affinity='precomputed',训练实例之间的相似性/亲和关系。如果提供的是一个稀疏矩阵,将会收敛成csr_matrix
y Ignored
未使用,在此按约定呈现为API一致性。
返回值 说明
labels ndarray, shape (n_samples,)
聚类标签
get_params(self, deep=True)

[源码]

获取此估计器的参数

参数 说明
deep bool, default=True
如果为True,则将返回此估计器的参数和所包含的作为估计器的子对象。
返回值 说明
params mapping of string to any
映射到其值的参数名称
predict(self, X)

[源码]

预测X中每个样本所属的最接近的聚类

参数 列表
X array-like or sparse matrix, shape (n_samples, n_features)
要预测的新数据。如果提供稀疏矩阵,则将其转换为稀疏csr_matrix
返回值 说明
labels ndarray, shape (n_samples,)
聚类标签
set_params(self, **params)

[源码]

设置此估计器的参数

该方法适用于简单估计器以及嵌套对象(例如pipelines)。后者具有表单的 <component>__<parameter>参数,这样就可以更新嵌套对象的每个组件。

表格 说明
**params dict
估计器参数
返回值 说明书
self object
估计器实例