K-means聚类算法中K值选择的肘部法则
创作时间:
作者:
@小白创作中心
K-means聚类算法中K值选择的肘部法则
引用
CSDN
1.
https://m.blog.csdn.net/m0_53244394/article/details/143945143
在K-means聚类算法中,确定最佳的聚类数K值是一个关键问题。本文将介绍如何使用肘部法则(Elbow Method)来确定最佳的K值,并通过Python代码实现这一过程。
WCSS的概念
WCSS(Within-Cluster Sum of Squares)是衡量聚类结果紧密程度的指标,表示每个样本点与其所属簇中心的距离平方和。简言之,就是样本类里面每个点到中心点的距离的平方,然后全部相加。
肘部法的详细步骤
确定K值范围
选择一个合理的K值范围,一般从1开始,逐步增加,直到达到一个预设的最大K值(例如,K=10)。计算不同K值下的WCSS
对于每一个K值,执行以下步骤:
- 运行K均值算法:将数据集划分为K个簇。
- 计算WCSS:计算簇内误差平方和,即所有样本点到其所属簇中心的距离平方和。
绘制肘部图
在图中,横轴表示簇的数量K,纵轴表示对应的WCSS值。绘制K值与WCSS的关系曲线。识别“肘部”位置
观察曲线中WCSS下降速度显著减缓的位置,即曲线出现“肘部”的点。该K值被认为是最佳的聚类数。
Python代码实现
下面通过Python代码实现上述过程:
import random
import matplotlib.pyplot as plt
# 一些数据点
data = [
[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0], [1, 6], [5, 6], [9, 9], [2, 7], [3, 3], [6, 4], [2, 5], [3, 5], [4, 5], [5, 5]
]
# K的取值范围
K = range(1, 10)
WCSS = [] # 存放各个K对应的WCSS
# 遍历K值
for i in K:
index_list = []
for j in range(i):
while True: # 随机选择中心点,但不能重复
index_ = random.randint(0, len(data) - 1)
if index_ in index_list:
continue
else:
index_list.append(index_)
break
centerPoint = [data[x] for x in index_list]
# 确定每个点在K值下的分类
cate_data = {}
for z in range(len(data)):
distance = []
for y in centerPoint:
distance.append(((y[0] - data[z][0]) ** 2 + (y[1] - data[z][1]) ** 2) ** 0.5)
cate_data[f"{data[z]}"] = distance.index(min(distance))
# 计算每个K值对应的WCSS
wcss_list = []
for p in range(i):
points = [eval(key) for key in cate_data.keys() if cate_data[key] == p]
wcss_list.append(sum([((points[n][0] - centerPoint[p][0]) ** 2 + (points[n][1] - centerPoint[p][1]) ** 2) ** 0.5 for n in range(len(points))]))
WCSS.append(sum(wcss_list))
# 绘制肘部图
plt.figure(figsize=(8, 5))
plt.plot(K, WCSS, 'bo-', markersize=8)
plt.xlabel('K')
plt.ylabel('WCSS')
plt.title('Elbow Method => K')
plt.xticks(K)
plt.grid(True)
plt.show()
运行上述代码,可以得到如下的图像:
从图中可以看出,K在4或者5这个点附近有一个明显的拐点,因此我们可以认为最佳的K值为4或者5。
通过本文的介绍和代码实现,读者应该能够掌握如何使用肘部法则来确定K-means聚类算法中的最佳K值。这种方法在实际应用中非常实用,能够帮助我们更好地进行聚类分析。
热门推荐
吕不韦与吕公:历史人物的辨析
传承中山医科精神,市民不出深圳就能在中大八院看中大名医
普通不锈钢和304不锈钢的区别(不锈钢对比:普通与304的区别)
如何入门Adobe Illustrator (AI)
详解NVIDIA显卡驱动Game Ready与Studio版本的区别
票务系统:现代票务管理的核心工具
如何高效清理笔记本电脑(简单有效的笔记本电脑清理方法及注意事项)
黑死病是如何爆发的?对欧洲造成了哪些影响?
中世纪黑死病席卷欧洲,欧洲人口损失惨重,历史进程为此改变!
绿篱植物——打造自然绿色屏障(从品种选择到养护保养)
公司股权转让纠纷如何解决:仲裁途径的优势与适用法律分析
怎么判断自己有没有癌症
Fenton氧化技术原理、影响因素及优化措施
健身者如何安排饮食方法?健身者饮食方法推荐!
脂漏性皮炎与饮食的关系:从母乳喂养到宝宝营养摄取
斐济果是什么 斐济果怎么吃
码住!大学生医保你要知道的那些事!
生育保险政策相关问题解答
掌握关键比例:六大茶类茶水比详析与精准指南
实用的茶艺,把茶泡好!
低度恶性纤维黏液样肉瘤的病理诊断要点
隔膜压力表规格参数具体介绍
证券资金转辅助银行卡:操作步骤与注意事项详解
通过软件模拟来选择合适的声学材料
医用内窥镜介绍及产品符合标准
为什么企业需要更新信息安全管理体系认证证书?
如何介绍团队及组织结构
三氯化铝(AlCl3)检测
服务器端口号是什么?它的作用和重要性如何?
篮球实战技巧:5 种上篮方式详解,让你的比赛更加精彩