ARTICLE DETAIL

资讯详情

深耕网站SEO优化与搜索引擎排名提升的一线实战洞察。

Python实现 K-Means聚类(jupyter notebook)

Python实现 K-Means聚类(jupyter notebook) 目录聚类的概念聚类的要求应用领域K-Means算法步骤聚类结果性能度量优点缺点代码实现手写代码调用sklearn 进行k-means聚类的概念聚类是把各不相同的个体分割为有更多相似性子集合的工作。聚类生成的子集合称为簇聚类的要求生成的簇内部的任意两个对象之间具有较高的相似度属于不同簇的两个对象间具有较高的相异度聚类与分类的区别在于聚类不依赖于预先定义的类没有预定义的类和样 本 ——聚类是一种无监督的数据挖掘任务应用领域客户价值分析文本分类基因识别空间数据处理卫星图片分析数据分析、统计学、机器学习、空间数据库技术、生物学和市场学也推动了聚类分析研究的进展K-Means算法步骤随机选取K个样本作为类中心计算各样本与各类中心的距离将各样本归于最近的类中心点求各类的样本的均值作为新的类中心判定若类中心不再发生变动或达到迭代次数算法结束否则回到第2步。聚类结果性能度量内部指标(internal index)Compactness紧密性(CP):各样本到聚类中心的平均距离每一类样本到样本中心的聚离的均值然后求类距离均值的均值Separation间隔性(SP):各类中心间的平均距离cp越小越好sp越大越好(k值越大即分类越多cp值越小所以并不是cp越小越小要结合实际情况)优点算法简单易于理解对球形簇样本聚类效果好分k均值等变种算法运行良好不受初始化问题的影响。缺点不能处理非球形簇、不同尺寸和不同密度的簇对离群点、噪声敏感代码实现手写代码from sklearn.datasets import load_iris import numpy as np iris load_iris() data iris.data k 2 #设置聚类中心 n len(data) dist np.zeros([n,k1]) #1.选中心 center data[:k, :] center_new np.zeros([k, data.shape[1]]) while True: #2.求距离 for i in range(n): for j in range(k): dist[i, j] np.sqrt(sum((data[i, :] - center[j, :])**2)) dist[i,k] np.argmin(dist[i, :k]) #求最小值的位置,并归类 # 4.求新类中心 for i in range(k): index dist[:,k] i #找到不同类类索引 center_new[i, :] data[index, :].mean(axis0) #求同类的新样本中心 #5.判定结果 if np.all(center center_new): break center center_new print(dist) #查看聚类结果聚类结果如下第一列为样本到第一个聚类中心的距离第二列为样本到第二个聚类中心的距离第三列为聚类的结果即距离哪个聚类中心最近的划分为该类。调用sklearn 进行k-meansfrom sklearn.datasets import load_iris from sklearn.cluster import KMeans iris load_iris() model KMeans(n_clusters3).fit(iris.data) model.labels_ #查看聚类结果聚类结果如下
返回列表