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

执行数据亲和传播聚类。

更多信息请参阅 用户指南

Parameters:
dampingfloat, 默认=0.5

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

max_iterint, 默认=200

最大迭代次数。

convergence_iterint, 默认=15

在没有改变估计聚类数量的情况下停止收敛的迭代次数。

copybool, 默认=True

输入数据是否复制。

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

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

affinity{‘euclidean’, ‘precomputed’}, 默认=’euclidean’

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

verbosebool, 默认=False

是否详细输出。

random_stateint, RandomState 实例或 None, 默认=None

伪随机数生成器,用于控制初始状态。使用整数以在函数调用中获得可重复的结果。 请参阅 术语表

Added in version 0.23: 此参数之前被硬编码为 0。

Attributes:
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_int

收敛所需的迭代次数。

n_features_in_int

fit 期间看到的特征数量。

Added in version 0.24.

feature_names_in_形状为 ( n_features_in_ ,) 的 ndarray

fit 期间看到的特征名称。仅当 X 的特征名称均为字符串时定义。

Added in version 1.0.

See also

AgglomerativeClustering

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

FeatureAgglomeration

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

KMeans

K-Means 聚类。

MiniBatchKMeans

小批量 K-Means 聚类。

MeanShift

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

SpectralClustering

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

Notes

有关示例,请参阅 examples/cluster/plot_affinity_propagation.py

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

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

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

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

References

Brendan J. Frey 和 Delbert Dueck,”通过数据点之间的传递消息进行聚类”,Science Feb. 2007

Examples

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

拟合从特征或亲和矩阵得到的聚类。

Parameters:
X{array-like, sparse matrix} 形状为 (n_samples, n_features),或 形状为 (n_samples, n_samples) 的 array-like

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

y忽略

未使用,此处存在是为了通过惯例保持 API 一致性。

Returns:
self

返回实例本身。

fit_predict(X, y=None)#

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

Parameters:
X{array-like, sparse matrix} 形状为 (n_samples, n_features),或 形状为 (n_samples, n_samples) 的 array-like

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

y忽略

未使用,此处存在是为了通过约定保持API一致性。

Returns:
labels形状为 (n_samples,) 的 ndarray

聚类标签。

get_metadata_routing()#

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

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

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

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

Returns:
paramsdict

参数名称映射到它们的值。

predict(X)#

预测X中每个样本所属的最接近的簇。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

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

Returns:
labelsndarray,形状为 (n_samples,)

簇标签。

set_params(**params)#

设置此估计器的参数。

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

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。