亲和力传播#

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

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

更多信息请参见 用户指南

参数:
damping浮点数,默认为 0.5

阻尼因子,范围在 [0.5, 1.0) 之间,表示当前值相对于传入值的保持程度(加权为 1 - damping)。这是为了避免更新这些值(消息)时出现数值振荡。

max_iter整数,默认为 200

最大迭代次数。

convergence_iter整数,默认为 15

估计聚类数量无变化的迭代次数,用于停止收敛。

copy布尔值,默认为 True

是否复制输入数据。

preference形状为 (n_samples,) 的类数组或浮点数,默认为 None

每个点的偏好 - 偏好值较大的点更有可能被选为示例。示例的数量,即聚类的数量,受输入偏好值的影响。如果偏好值不是作为参数传入,则将设置为输入相似度的中位数。

affinity{'euclidean', 'precomputed'},默认为 'euclidean'

使用哪种亲和度。目前支持 'precomputed' 和 euclidean。'euclidean' 使用点之间负平方欧几里得距离。

verbose布尔值,默认为 False

是否显示详细信息。

random_state整数、RandomState 实例或 None,默认为 None

伪随机数生成器,用于控制初始状态。使用整数可在函数调用之间获得可重复的结果。参见 词汇表

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

属性:
cluster_centers_indices_形状为 (n_clusters,) 的 ndarray

聚类中心的索引。

cluster_centers_形状为 (n_clusters, n_features) 的 ndarray

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

labels_形状为 (n_samples,) 的 ndarray

每个点的标签。

affinity_matrix_形状为 (n_samples, n_samples) 的 ndarray

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

n_iter_整数

收敛所需的迭代次数。

n_features_in_整数

拟合期间看到的特征数量。

0.24 版本新增。

feature_names_in_形状为 (n_features_in_,) 的 ndarray

拟合期间看到的特征名称。仅当 X 的特征名称全部为字符串时定义。

1.0 版本新增。

另请参见

AgglomerativeClustering

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

FeatureAgglomeration

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

KMeans

K 均值聚类。

MiniBatchKMeans

小批量 K 均值聚类。

MeanShift

使用平面核的均值漂移聚类。

SpectralClustering

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

备注

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

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

当算法不收敛时,如果存在任何示例/聚类,它仍将返回 cluster_center_indices 和标签的数组,但是它们可能是退化的,应谨慎使用。

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

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

参考文献

Brendan J. Frey 和 Delbert Dueck,“通过在数据点之间传递消息进行聚类”,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形状为 (n_samples, n_features) 的 {类数组, 稀疏矩阵},或形状为 (n_samples, n_samples) 的类数组

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

y忽略

未使用,出于 API 一致性约定而在此处显示。

返回:
self

返回实例本身。

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

根据特征/亲和矩阵拟合聚类;返回聚类标签。

参数:
X形状为 (n_samples, n_features) 的 {类数组, 稀疏矩阵},或形状为 (n_samples, n_samples) 的类数组

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

y忽略

未使用,出于 API 一致性约定而在此处显示。

返回:
labels形状为 (n_samples,) 的 ndarray

聚类标签。

get_metadata_routing()[source]#

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

请查看 用户指南,了解路由机制的工作原理。

返回:
routingMetadataRequest

一个 MetadataRequest 封装了路由信息。

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deepbool,默认值为 True

如果为 True,则将返回此估计器和包含的作为估计器的子对象的参数。

返回:
paramsdict

参数名称与其值的映射。

predict(X)[source]#

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

参数:
X形状为 (n_samples, n_features) 的 {类数组, 稀疏矩阵}

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

返回:
labels形状为 (n_samples,) 的 ndarray

聚类标签。

set_params(**params)[source]#

设置此估计器的参数。

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

参数:
**paramsdict

估计器参数。

返回:
self估计器实例

估计器实例。