【k-means学习笔记】

算法描述

1.问题假设:操场上有k个体育老师和k个班的学生,各班学生围着各自的老师在玩耍,现求各个老师的坐标。
2.数据输入:所有学生的坐标位置,但不知道每个学生对应的老师是谁。
3.算法过程:
①随机选取k个坐标。
②计算每个学生与k个老师的坐标距离并以距离为原则将此学生归类到最近的老师。
③将所有学生归类完毕后,计算每个老师类中学生坐标的均值,并以此均值作为老师坐标的更新值。

知识储备

1.k-means算法不要求数据有标签(即不知道每个学生对应的老师),所以为无监督。

举个栗子

在这里插入图片描述
在这里插入图片描述

实现代码

1.debug代码引用《机器学习实战》提供的demon,此书作者提供完整代码和数据集,强烈推荐。[1]
2.sklearn实现版本。[3]

算法分析

1.在例子中引用少量二维数据,所以k值的选取显而易见。但在三维以上数据集中,很难确定k值的选取。
2.对噪点敏感;倘若某个学生逃课了(不提倡),在更新质心(老师坐标),质心坐标出现明显偏差。
3.算法的计算复杂度是数据量质心数迭代数据集的次数,计算相对复杂。
4.因质心的初始值是随机生成的,最终结果受初始值影响会收敛到一个局部最优的位置。可以跑多次该算法以寻找相对较优结果,但计算复杂度更高了。

资料引用

[1]GitHub:https://github.com/wzy6642/Machine-Learning-in-Action-Python3/tree/master/K_Means_Project1
[2]CSDN:https://blog.csdn.net/jiaoyangwm/article/details/79669387
[3]CSDN:https://blog.csdn.net/guihenao4010/article/details/85159661
此算法笔记会在CSDN、知乎、b站及公众号同步更新,账号名为一枚嘉应子。转载注明出处,侵权必究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值