AffinityPropagation#

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

执行数据的 Affinity Propagation 聚类。

更多信息请阅读 用户指南

参数:
dampingfloat, default=0.5

阻尼因子,取值范围为 [0.5, 1.0)。它表示相对于输入值(权重为 1 - 阻尼因子)保留当前值的程度。这是为了在更新这些值(消息)时避免数值振荡。

max_iter整型, 默认为 200

最大迭代次数。

convergence_iterint, default=15

当估计出的聚类数量在一定迭代次数内没有变化时,停止收敛。

copy布尔值, 默认为 True

是否对输入数据进行复制。

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

每个点的偏好值 - 偏好值越大的点越有可能被选为聚类中心(exemplar)。聚类中心(即聚类)的数量受输入的偏好值影响。如果未将偏好值作为参数传入,它们将被设置为输入相似度的中位数。

affinity{‘euclidean’, ‘precomputed’}, default=’euclidean’

使用的亲和度度量。目前支持 ‘precomputed’ 和 euclidean。‘euclidean’ 使用点之间的负欧氏距离平方。

verbosebool, default=False

是否启用详细模式。

random_stateint, RandomState instance or None, default=None

用于控制起始状态的伪随机数生成器。使用 int 可确保跨函数调用的结果可复现。请参阅 术语表

0.23 版本新增: 此参数之前硬编码为 0。

属性:
cluster_centers_indices_ndarray of shape (n_clusters,)

聚类中心的索引。

cluster_centers_ndarray of shape (n_clusters, n_features)

聚类中心(如果 affinity != precomputed)。

labels_ndarray of shape (n_samples,)

每个点的标签。

affinity_matrix_ndarray of shape (n_samples, n_samples)

存储在 fit 中使用的亲和度矩阵。

n_iter_int

达到收敛所需的迭代次数。

n_features_in_int

拟合 期间看到的特征数。

0.24 版本新增。

feature_names_in_shape 为 (n_features_in_,) 的 ndarray

fit 期间看到的特征名称。仅当 X 具有全部为字符串的特征名称时才定义。

1.0 版本新增。

另请参阅

AgglomerativeClustering

递归地合并使给定连接距离增加最小的聚类对。

FeatureAgglomeration

类似于 AgglomerativeClustering,但递归合并的是特征而不是样本。

KMeans

K-Means 聚类。

MiniBatchKMeans

Mini-Batch K-Means 聚类。

MeanShift

使用平坦核的 Mean Shift 聚类。

SpectralClustering

将聚类应用于归一化拉普拉斯算子的投影。

注意事项

亲和传播算法的算法复杂度与点数的平方成正比。

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

fit 不收敛时,cluster_centers_ 仍然会被填充,但可能已退化。在这种情况下,请谨慎操作。如果 fit 不收敛且未能生成任何 cluster_centers_,则 predict 会将所有样本标记为 -1

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

References

Brendan J. Frey 和 Delbert Dueck,“Clustering by Passing Messages Between Data Points”,Science 2007 年 2 月

示例

>>> from sklearn.cluster import AffinityPropagation
>>> import numpy as np
>>> X = np.array([[1, 2], [1, 4], [1, 0],
...               [4, 2], [4, 4], [4, 0]])
>>> clustering = AffinityPropagation(random_state=5).fit(X)
>>> clustering
AffinityPropagation(random_state=5)
>>> clustering.labels_
array([0, 0, 0, 1, 1, 1])
>>> clustering.predict([[0, 0], [4, 4]])
array([0, 1])
>>> clustering.cluster_centers_
array([[1, 2],
       [4, 2]])

有关用法示例,请参阅 亲和传播聚类算法演示

有关亲和传播与其他聚类算法的比较,请参阅 在玩具数据集上比较不同的聚类算法

fit(X, y=None)[source]#

从特征或亲和度矩阵进行聚类拟合。

参数:
X{array-like, sparse matrix} of shape (n_samples, n_features), or array-like of shape (n_samples, n_samples)

要进行聚类的训练实例,或者在 affinity='precomputed' 时为实例间的相似度/亲和度。如果提供了稀疏特征矩阵,它将被转换为稀疏的 csr_matrix

y被忽略

Not used, present here for API consistency by convention.

返回:
self

返回实例本身。

fit_predict(X, y=None)[source]#

从特征/亲和度矩阵进行聚类拟合;返回聚类标签。

参数:
X{array-like, sparse matrix} of shape (n_samples, n_features), or array-like of shape (n_samples, n_samples)

要进行聚类的训练实例,或者在 affinity='precomputed' 时为实例间的相似度/亲和度。如果提供了稀疏特征矩阵,它将被转换为稀疏的 csr_matrix

y被忽略

Not used, present here for API consistency by convention.

返回:
labelsndarray of shape (n_samples,)

聚类标签。

get_metadata_routing()[source]#

获取此对象的元数据路由。

请查阅 用户指南,了解路由机制如何工作。

返回:
routingMetadataRequest

封装路由信息的 MetadataRequest

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deepbool, default=True

如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。

返回:
paramsdict

参数名称映射到其值。

predict(X)[source]#

Predict the closest cluster each sample in X belongs to.

参数:
Xshape 为 (n_samples, n_features) 的 {array-like, sparse matrix}

用于预测的新数据。如果提供了稀疏矩阵,它将被转换为稀疏的 csr_matrix

返回:
labelsndarray of shape (n_samples,)

聚类标签。

set_params(**params)[source]#

设置此估计器的参数。

此方法适用于简单的估计器以及嵌套对象(如 Pipeline)。后者具有 <component>__<parameter> 形式的参数,以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计器参数。

返回:
selfestimator instance

估计器实例。