python sklearn库中的AffinityPropagation( )聚类算法主要参数的使用,

本文介绍了Python机器学习库sklearn中的AffinityPropagation聚类算法,包括其主要参数如damping、max_iter、convergence_iter等的作用。通过实例展示了如何使用该算法进行数据聚类,并解释了聚类中心的确定和算法复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class sklearn.cluster.AffinityPropagation(damping=0.5, max_iter=200, convergence_iter=15, copy=True, preference=None, affinity=’euclidean’, verbose=False)

函数参数

    damping : float, optional, default: 0.5,阻尼系数,默认值0.5

    max_iter : int, optional, default: 200,最大迭代次数,默认值是200

    convergence_iter : int, optional, default: 15,在停止收敛的估计集群数量上没有变化的迭代次数。默认15

    copy : boolean, optional, default: True,布尔值,可选,默认为true,即允许对输入数据的复制

    preference : array-like, shape (n_samples,) or float, optional,近似数组,每个点的偏好 - 具有较大偏好值的点更可能被选为聚类的中心点。 簇的数量,即集群的数量受输入偏好值的影响。 如果该项未作为参数,则选择输入相似度的中位数作为偏好

    affinity : string, optional, default=``euclidean``目前支持计算预欧几里得距离。 即点之间的负平方欧氏距离。

### Python 中多维数据聚类算法的实现与应用 #### AP(Affinity Propagation)算法简介及其时间复杂度 AP算法是一种基于消息传递机制的数据聚类方法,其特点在于能够自动确定簇的数量。该算法的时间复杂度相对较高,在单次迭代过程中大约为 O(),这使得它对于大规模数据集的应用受到一定限制[^1]。 #### 参数调整的重要性——阻尼系数的影响 在实际操作中发现,调参的结果特别是阻尼系数的选择会对最终得到的聚类效果产生显著影响。当设置`model = AffinityPropagation(damping=0.5)`时,这里的参数`damping`即代表了所谓的阻尼系数,它的合理范围是在闭区间\[0.5, 1\)内选取适当数值来优化性能表现和收敛速度。 ```python from sklearn.cluster import AffinityPropagation import numpy as np from sklearn.preprocessing import StandardScaler # 创建并标准化随机生成的四维数据样本 X = np.random.random((500, 4)) scaler = StandardScaler() scaled_X = scaler.fit_transform(X) # 构建AP模型实例化对象,并指定必要的超参数配置 affinity_model = AffinityPropagation(damping=0.9) # 进行训练拟合过程以及预测分类标签分配给各个观测点 clusters_labels = affinity_model.fit_predict(scaled_X) unique_clusters = len(np.unique(clusters_labels)) print(f"Number of estimated clusters : {unique_clusters}") ``` 上述代码展示了如何利用sklearn中的`AffinityPropagation`模块完成一个多维空间下的无监督学习任务;通过设定不同的阻尼因子可以观察到不同模式下产生的聚类结构差异。 #### K-Means 算法应用于二维数据聚类案例分析 除了AP之外,还有其他类型的聚类技术适用于处理更高维度的数据集合。例如K-means就是一种简单而有效的划分型聚类方案,它可以很好地适应于低至高纬的空间分布特征提取工作。下面给出一段简单的例子说明怎样构建一个基本框架来进行此类运算: ```python from sklearn.cluster import KMeans import matplotlib.pyplot as plt # 假设我们有一个已经准备好的二维数组形式的数据源dataSet kmeans = KMeans(n_clusters=3).fit(dataSet) # 设定预期分组数目n_clusters centroids = kmeans.cluster_centers_ labels = kmeans.labels_ colors = ["g.","r.","c."] for i in range(len(dataSet)): plt.plot(dataSet[i][0], dataSet[i][1], colors[labels[i]], markersize = 10) plt.scatter(centroids[:, 0], centroids[:, 1], marker="x", s=150, linewidths=5, zorder=10) plt.show() ``` 此段脚本主要实现了对输入矩阵执行标准欧式距离计算基础上的标准K均值聚类流程,并借助图形可视化工具matplotlib直观呈现出了三个预定义类别中心位置及各自所属成员之间的关系图谱[^2]。 #### 层次聚类介绍及相关函数展示 最后值得一提的是层次聚类(Hierarchical Clustering),这是一种不需要预先知道具体群落数量的方法论体系。相比于前面提到过的两种方式而言,这种方法更侧重于建立一棵树状结构(Tree Structure)或者说Dendrogram用来表示个体间相似程度的变化趋势。以下是有关欧几里得测距功能的一个辅助性子程序定义: ```python def euler_distance(point1: np.ndarray, point2: list) -> float: """ 计算两点间的欧氏距离 Args: point1 (np.ndarray): 第一点坐标向量 point2 (list): 第二点坐标列表 Returns: float: 返回两个节点之间直线长度测量值 """ distance = ((point1 - np.array(point2)) ** 2).sum() ** 0.5 return round(distance, ndigits=2) ``` 这段函数接受任意两处地理位置作为输入参数,然后依据它们各自的笛卡尔直角坐标系表达式求解其间最短路径长度,从而为进一步开展凝聚式或分裂式的层级归并奠定基础[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值