机器学习3 kmeans找最优K的2种方法

本文介绍了两种寻找K-means聚类中最佳簇内误差平方和inertia的方法:一种是通过循环不断更新最小值,另一种是利用字典存储并比较。关键步骤包括初始化、模型训练、inertia比较和结果索引获取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

法1

思想:最终是要找簇内误差平方和inertia最小,以及对应的k,那可以先给最后得到的min_inertia赋一个很大的值,每找到一个更小的就进行替换

先给最后得到的min_inertia赋一个很大的值,k初始值为0用来储存最后得到的n_clusters

min_inertia=1000000000
k=0

构建kmeans模型,套上循环

for i in range(2,30)
	km=KMeans(n_clusters=i)
	km.fit(data)

判断inertia大小,将min_inertia替换成小的,同时把此时的i赋值给k

if min_inertia > km.inertia_:
	min_inertia = km.inertia_ #用到两次km.inertia,可以将其单独赋值给一个变量inertia,减少计算量
	k=i

在这里插入图片描述

法2

构建一个字典
d{}

遍历生成键值对 key = i ; value = km.inertia_

for i in range(5,30):
	km=KMeans(inertia=i)
	km.fit(data)
	d[i]=km.inertia_

在这里插入图片描述
可以将字典生成一个一维数组更直观 .series()

d_new = d.series(d)

在这里插入图片描述

找最小值

1,用.idxmin() 返回在请求轴上第一次出现最小值的索引

d.idxmin()

在这里插入图片描述
2,也可以用argmin()找索引

d.argmin()

在这里插入图片描述
注意这俩返回的索引不一样,但是对应值是一样的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值