Java教程

【k-means学习笔记】

本文主要是介绍【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站及公众号同步更新,账号名为一枚嘉应子。转载注明出处,侵权必究。

这篇关于【k-means学习笔记】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!