一、实验要求(10%)
1. 熟练使用Python中数据处理分析的基本操作
2. 理解并掌握常用的聚类算法,能使用Python实现聚类算法——Kmeans
(1)将数据准备成需要的格式
(2)编写聚类算法
(3)完成聚类算法的训练和测试
二、实验内容及步骤(80%)
计算欧拉距离并计算质心位置
![](https://i-blog.csdnimg.cn/blog_migrate/740747acd084e5490cd0463f24dc0aeb.png)
使用K-means分类,随机取质心,更新质心,知道变化量都为0,并根据质心计算每个集群
![](https://i-blog.csdnimg.cn/blog_migrate/324bc2fe8da3c725b1b0c66647200a2b.png)
分别运行三个数据集,运用聚类算法得出图形结果
![](https://i-blog.csdnimg.cn/blog_migrate/2e4e069f105cec0023253b45920c76bb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a9959ff8b25bb9490b29b0cd4115a7a7.png)
实验最终运行结果如下:
第一个数据集:
![](https://i-blog.csdnimg.cn/blog_migrate/473d9f5d5470eb7dbc604a372f891f18.png)
第二个数据集:
![](https://i-blog.csdnimg.cn/blog_migrate/5d8ede360fa86606ae06d903d5298a4f.png)
第三个数据集:
![](https://i-blog.csdnimg.cn/blog_migrate/c9a4539c73ce01b1769d639feb156bcc.png)
三、心得总结(写出自己在完成实验过程中遇到的问题、解决方法,以及体会、收获等)(10%)
K-mean算法的特点是不能保证该算法收敛域全局最优解,并且它常常终止于一个局部最优解。结果可能依赖于初始簇中心的随机选择,所以为了尽可能的得到好的结果,我们通常会选择不同的初始簇中心,来多疑运行K-均值算法。算法优点:
(1)原理比较简单,实现也是很容易,收敛速度快。
(2)聚类效果较优。
(3)算法的可解释度比较强。
(4)主要需要调参的参数仅仅是簇数k。
算法缺点:
(1)K值的选取不好把握
(2)对于不是凸的数据集比较难收敛
(3)如果各隐含类别的数据不平衡,比如各隐含类别的数据量严重失衡,或者各隐含类别的方差不同,则聚类效果不佳。
(4) 采用迭代方法,得到的结果只是局部最优。
遇到的问题:
在运行聚类算法的过程中,遇到了不能同时处理多个数据集的情况
解决方法:
分别编写三个命令分别对应执行不同的数据集,在运行一个命令时将其他两个命令注释掉,这样可以保证程序运行时只对一个数据集进行处理,不会发生多个数据集同时进行聚类算法的情况。
收获:通过这次实验更加明白了聚类算法在处理数据集方面的便利性,同时也了解到了聚类算法容易受到初始簇质心的情况影响,使结果产生误差,也了解到了二分K-means聚类算法可以进一步的优化,使得运行结果更加精确。