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,)
簇标签。