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)[源代码]#

执行数据的亲和力传播集群。

阅读更多的 User Guide .

参数:
damping浮点数,默认值=0.5

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

max_iterint,默认=200

最大迭代次数。

convergence_iterint,默认=15

停止收敛的估计集群数量没有变化的迭代次数。

copy布尔,默认=True

复制输入数据。

preference形状(n_samples,)或浮点形,默认=无

每个点的偏好--偏好值较大的点更有可能被选为样本。样本(即集群)的数量受到输入偏好值的影响。如果偏好不作为参数传递,则它们将被设置为输入相似度的中位数。

affinity'欧几里得',',',默认='欧几里得'

使用哪种亲和力。目前是“预先计算的”和 euclidean 得到支持。“欧几里得”使用点之间的负平方欧几里得距离。

verbose布尔,默认=假

是否冗长。

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

伪随机数生成器来控制开始状态。使用int来实现跨函数调用的可重复结果。看到 Glossary .

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

属性:
cluster_centers_indices_形状的nd数组(n_clusters,)

聚类中心指数。

cluster_centers_形状的nd数组(n_classes,n_features)

聚类中心(如果亲和度!= precomputed ).

labels_形状的nd数组(n_samples,)

每个点的标签。

affinity_matrix_形状的nd数组(n_samples,n_samples)

存储中使用的亲和力矩阵 fit .

n_iter_int

收敛所需的迭代次数。

n_features_in_int

期间看到的功能数量 fit .

Added in version 0.24.

feature_names_in_ :nd形状数组 (n_features_in_ ,)nd数组形状(

Names of features seen during fit. Defined only when X has feature names that are all strings.

Added in version 1.0.

参见

AgglomerativeClustering

以最小限度地增加给定的联动距离的方式合并这对集群。

FeatureAgglomeration

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

KMeans

K-Means聚类

MiniBatchKMeans

小批量K均值集群。

MeanShift

使用平坦核的均值漂移集群。

SpectralClustering

将集群应用于规范化拉普拉斯的投影。

注意到

有关使用示例,请参阅 亲和力传播分簇算法演示 .

亲和力传播的算法复杂性与点数的二次关系。

当算法不收敛时,它仍然会返回 cluster_center_indices 和标签,如果有任何样本/集群,但它们可能是退化的,应谨慎使用。

fit 不收敛, cluster_centers_ 仍然存在,但可能会退化。在这种情况下,请谨慎行事。如果 fit 不会收敛并且无法产生任何 cluster_centers_ 然后 predict 将每个样本标记为 -1 .

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

引用

Brendan J. Frey和Delbert Dueck,“通过在数据点之间传递消息进行聚集”,科学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)[源代码]#

根据特征或亲和力矩阵来适应集群。

参数:
X{类数组,稀疏矩阵}的形状(n_samples,n_features),或 array-like of shape(n_samples,n_samples)

训练实例进行集群,或实例之间的相似性/亲和力,如果 affinity='precomputed' .如果提供稀疏特征矩阵,则将其转换为稀疏特征矩阵 csr_matrix .

y忽视

未使用,此处列出是为了按照惯例实现API一致性。

返回:
自我

返回实例本身。

fit_predict(X, y=None)[源代码]#

根据特征/亲和力矩阵匹配集群;返回集群标签。

参数:
X{类数组,稀疏矩阵}的形状(n_samples,n_features),或 array-like of shape(n_samples,n_samples)

训练实例进行集群,或实例之间的相似性/亲和力,如果 affinity='precomputed' .如果提供稀疏特征矩阵,则将其转换为稀疏特征矩阵 csr_matrix .

y忽视

未使用,此处列出是为了按照惯例实现API一致性。

返回:
labels形状的nd数组(n_samples,)

集群标签。

get_metadata_routing()[源代码]#

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

请检查 User Guide 关于路由机制如何工作。

返回:
routingMetadataRequest

A MetadataRequest 封装路由信息。

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数:
deep布尔,默认=True

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

返回:
paramsdict

参数名称映射到其值。

predict(X)[源代码]#

预测X中每个样本所属的最近集群。

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

需要预测的新数据。如果提供了稀疏矩阵,则会将其转换为稀疏矩阵 csr_matrix .

返回:
labels形状的nd数组(n_samples,)

集群标签。

set_params(**params)[源代码]#

设置此估计器的参数。

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

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。