当前位置:   article > 正文

聚类k值确定--肘部法则_kmeans算法确定聚类个数肘部法则sse

kmeans算法确定聚类个数肘部法则sse

k-means是以最小化样本与质点平方误差作为目标函数,将每个簇的质点与簇内样本点的平方距离误差和(sum of the squared errors,SSE,误差平方和)称为畸变程度(distortions),那么,对于一个簇,它的畸变程度越低,代表簇内成员越紧密,畸变程度越高,代表簇内结构越松散。

当k小于真实聚类数时,由于k的增大会大幅增加每个簇的聚合程度,故SSE的下降幅度会很大,而当k到达真实聚类数时,再增加k所得到的聚合程度回报会迅速变小,所以SSE的下降幅度会骤减,然后随着k值的继续增大而趋于平缓,也就是说SSE和k的关系图是一个手肘的形状,而这个肘部对应的k值就是数据的真实聚类数.

例如上图,在k=5时,相较于k=4时,畸变程度的变化急剧减小,所以,在k=4这点就是最佳的k值

实例代码

  1. import pandas as pd
  2. from sklearn.cluster import KMeans
  3. import matplotlib.pyplot as plt
  4. df_features = pd.read_csv(r'x:\xxxx.csv',encoding='gbk')
  5. SSE = [] # 存放每次结果的误差平方和
  6. for k in range(1,9):
  7. estimator = KMeans(n_clusters=k) # 构造KMeans聚类器
  8. estimator.fit(df_features[['R','F','M']]) # 训练模型
  9. SSE.append(estimator.inertia_) # estimator.inertia_获取聚类准则的总和
  10. X = range(1,9)
  11. plt.xlabel('k')
  12. plt.ylabel('SSE')
  13. plt.plot(X,SSE,'o-')
  14. plt.show()

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

闽ICP备14008679号