聚类分析,也称为聚类,是一种无监督的机器学习任务。与监督学习不同,聚类算法仅依赖输入数据,并致力于在特征空间中找到自然的组或群集。这些群集通常是特征空间中的密度区域,其中同一群集的数据点比其他群集更紧密地聚集在一起。
聚类在数据分析中扮演着重要角色,有助于深入了解问题域的内在结构和模式。这种分析有时被称为模式发现或知识发现,可以帮助我们洞察数据中隐藏的模式和关联。聚类还可以作为特征工程的一种手段。通过将数据点映射到已标识的群集中,我们可以为现有和新的示例创建新的特征标签。
二、聚类方法汇总及对比
实际项目中Kmeans聚类应该是最为常用的聚类模型,但其实聚类模型的种类还挺多的,每种聚类模型都有其独特的特性和应用场景。在实际应用中,需要根据具体的数据情况、算力资源和业务需求来选择合适的模型。
在工作或学习中,聚类算法是非常常见的算法之一。这里与大家剖析总结下常用的聚类算法:
亲和力传播是一种基于实例的学习算法,用于聚类。它通过发送消息在数据点之间建立关系,并选择最佳的聚类结果。
训练过程通过不断迭代,为两对数据点之间相似度的输入度量。在数据点之间交换实值消息,直到一组高质量的范例和相应的群集逐渐出现,使数据点之间形成聚类。
适用于任何需要基于实例学习的聚类任务。
#生成样本数据iris=datasets.load_iris()#使用Iris数据集作为示例X=iris['data']#提取特征矩阵#创建DBSCAN对象并拟合数据dbscan=DBSCAN(eps=0.3,min_samples=5)#eps是邻域半径,min_samples是形成核心对象的最小点数labels=dbscan.fit_predict(X)#获取每个样本点的聚类标签#可视化结果plt.scatter(X[:,0],X[:,1],c=labels,cmap='viridis')#使用viridis色彩映射绘制结果图plt.show()#显示结果图```5、K-Means聚类模型模型原理K-Means聚类是一种基于距离的聚类方法,通过最小化每个数据点到其所属簇中心点的距离之和,将数据点划分为K个簇。算法的主要思想是:每个簇有一个中心点,数据点被分配到最近的中心点所在的簇中。通过迭代更新每个簇的中心点,使得所有数据点到其所属簇的中心点的距离之和最小。
fromsklearn.clusterimportKMeans#导入K-Means聚类算法fromsklearnimportdatasets#导入datasets用于生成样本数据importmatplotlib.pyplotasplt#导入绘图库#生成样本数据iris=datasets.load_iris()#使用Iris数据集作为示例X=iris['data']#提取特征矩阵#创建K-Means对象并拟合数据kmeans=KMeans(n_clusters=3)#假设有3个簇labels=kmeans.fit_predict(X)#获取每个样本点的聚类标签#可视化结果plt.scatter(X[:,0],X[:,1],c=labels,cmap='viridis')#使用viridis色彩映射绘制结果图plt.show()#显示结果图```6、高斯混合模型高斯混合模型是一种概率模型,用于表示数据点集合的混合高斯分布。在聚类任务中,高斯混合模型将数据点划分为K个簇,每个簇的数据点都遵循一个高斯分布(正态分布)。
高斯混合模型的原理基于以下几个假设:
fromsklearn.mixtureimportGaussianMixture#导入高斯混合模型fromsklearnimportdatasets#导入datasets用于生成样本数据importmatplotlib.pyplotasplt#导入绘图库#生成样本数据iris=datasets.load_iris()#使用Iris数据集作为示例X=iris['data']#提取特征矩阵#创建高斯混合模型对象并拟合数据gmm=GaussianMixture(n_components=3)#假设有3个簇labels=gmm.fit_predict(X)#获取每个样本点的聚类标签#可视化结果plt.scatter(X[:,0],X[:,1],c=labels,cmap='viridis')#使用viridis色彩映射绘制结果图plt.show()#显示结果图```三、聚类评估指标
调整兰德系数(AdjustedRandIndex,ARI):衡量聚类结果与真实标签的匹配程度,取值范围为[-1,1],值越大表示聚类效果越好。