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值。这种方法在实际应用中非常实用,能够帮助我们更好地进行聚类分析。
热门推荐
株洲中秋"烧塔"习俗:千年古茶乡的独特夜景风俗画
新高考历地生可选专业2025:附最吃香的十大专业
猕猴桃吃后嘴涩怎么办?专家教你正确食用方法
惠州9大景点推荐,这个夏天带娃去哪玩?
开车必备:左右车距判断技巧与驾驶技术评估标准
2024年河南专升本,大一大二的同学该如何应对?
体检项目选择指南:如何制定个性化体检方案
窗与幕墙的区别是什么
收入增3倍!时光杂货店、和平精英、原神都在发力,行业新方向?
48V电动车续航揭秘:为什么不一定比60V、72V跑得短?
结缔组织病的皮肤表现有哪些
路桥这些路段是“可变车道”!手把手教你怎么开
从面相学看龚如心:一位商界女强人的面部密码
素食真的健康吗?最新的专家意见
如何理解股票的趋势线?这条趋势线有哪些实际作用?
无信号灯路口通行规则全解析:谁该让行?法律怎么说?
春季花粉过敏性鼻炎应对指南:从病因到防护措施
明明信用卡可以取现,为什么有人偏要套现?银行经理解释得很清楚
安史之乱,唐肃宗如何从西北调兵?5大节度使派兵多少?一文了解
紫微斗数判断结婚年龄的方法
甲亢患者可以吃白萝卜吗?医生来解答
山西太原纯阳宫:道教文化与建筑艺术的完美融合
结缔组织病怎么诊断
央国企应届毕业生选拔机制全解析:不可不知的那些事儿
GB/T 43701-2024滑雪场地滑雪道安全防护规范
user.js脚本怎么安装
“龙的传人”讲述非遗故事:板凳龙舞三百年
王阳明的"军事心学":知行合一,杀、抚果断,平定顽固匪患
甲亢病人什么不能吃的东西
集装箱尺寸详解:从20英尺到45英尺