当前位置:   article > 正文

Python_无监督学习_基于轮廓系数法的K-means聚类实现_轮廓系数与k的关系python处理excel表

轮廓系数与k的关系python处理excel表

K-means算法属于无监督学习,根本思想是将数据集中数据分为k组,计算各组元素到其聚类中心的欧氏距离。

在K-means方法中主要需要解决的问题是确定合适的分组数k,此时引入轮廓系数,通过计算不同分组数k下的轮廓系数确定最佳的k值。

Python中实现基于轮廓系数法的K-means聚类需要用到sklearn库中的相关部分和Pandas包。

  1. from sklearn.cluster import KMeans
  2. from sklearn.metrics import silhouette_score
  3. import pandas as pd

第一步,读取数据,将对应的数据特征值划分为数组作为聚类的准备工作:

  1. data = pd.read_csv('E:/文件夹1/文件夹2/聚类数据集.csv')
  2. data = data[['特征1','特征2','特征3']] #选择需要的分类特征值
  3. data_Array = data.values #生成数组,以便进行聚类

第二步,通过遍历不同的k值,计算对应的轮廓系数值:

  1. def Silhouette_ALL(n): #定义的轮廓系数函数
  2. data_Cluster = KMeans(n_clusters = n)
  3. data_Cluster.fit(data_Array)
  4. label = data_Cluster.labels_
  5. Silhouette_Coefficient = silhouette_score(data_Array, label)
  6. return Silhouette_Coefficient
  7. y=[]
  8. for n in range(2,10): #遍历不同k值下轮廓系数
  9. data_data_Silhouette_mean = Silhouette_ALL(n)
  10. y.append(data_data_Silhouette_mean)
  11. print(y)

第三步,选择步骤二中y中轮廓系数最大的项,将其对应的分组数作为K-means的k值进行计算,得到最佳的分类结果:

  1. data_Cluster = KMeans(n_clusters=4) #n_clusters=y中轮廓系数最大值对应的分组数
  2. data_Cluster.fit(data_Array)
  3. label = data_Cluster.labels_ #获得聚类标签
  4. center = data_Cluster.cluster_centers_ #聚类中心

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/413774
推荐阅读
相关标签
  

闽ICP备14008679号