机器学习-周志华-个人练习9.4

本文探讨了k均值算法在西瓜数据集上的应用,通过设置不同k值和初始中心点进行实验,揭示了初始中心分散在高密度区域能获得更好聚类效果。同时,指出书中示例可能存在的错误,并分享了使用matplotlib制作动图的挑战与解决方案。

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

9.4 试编程实现k均值算法,设置3组不同的k值,3组不同初始中心点,在西瓜数据集4.0上进行实验比较,并讨论什么样的初始中心有利于取得好结果。

根据k均值算法的迭代公式,可以知道在二维平面上,这些中心点直接由其几何位置的两点间垂直平分线作为聚类边界,因此在数据不多的情况下,很容易陷入局部最优,从而使迭代过程很快结束。实际执行代码发现,所谓取得好结果,应该是使各点离聚类边界尽量远,且最终的中心点相互远离。个人推测,由于在更新中心向量的时候使用了平均,因而所有中心会尽量向点分布密度较大的区域移动,因此,初始中心应该尽量分散到不同的高点密度分布区域上去,可取得较好结果。

本题的算法十分简单,不过如果直接采用与书上相同的初始中心,则马上就会收敛而不会像书上所说训练5轮才达到收敛。也就是说,书上给的示例是错的。

另外,通过这个题,我才发现,原来用matplotlib可以画动图,利用animation里面的ArtistAnimation或者FuncAnimation即可。然而,我发现不能理想地导出gif图,这就比较尴尬了。。。网上搜了一下发现,需要装ImageMagick这个软件,然而装了还是各种错,后来找到matplotlib的配置文件,在最后一行更改convert_path为convert.exe的安装路径也仍然不行,还报错:winError 5,后来找到一篇帖子一篇帖子

### 周志华机器学习》第9.4节内容解析 在周志华所著的《机器学习》一书中,第9.4节主要讨论了聚类性能度量的方法[^1]。这一部分深入探讨了如何评价不同聚类算法的效果以及它们产生的簇的质量。 #### 聚类有效性指标 为了衡量聚类结果的好坏,通常采用内部指标和外部指标两种方式: - **内部指标**:仅依赖于数据本身的信息来评估聚类效果。常见的有紧致性和分离性两个方面。紧致性指的是同一簇内对象间的相似度;而分离性则表示不同簇之间差异的度。例如SSE(Sum of Squared Errors),即平方误差之和可以作为衡量标准之一[^2]。 - **外部指标**:当存在真实标签时可用来比较预测标签与实际标签的一致性情况。常用的包括纯度(Purity),NMI (Normalized Mutual Information, 归一化互信息), ARI(Adjusted Rand Index,调整兰德指数)等措施[^3]。 对于具体的计算公式,在处理离散型变量的情况下,ARI定义如下所示: ```python from sklearn.metrics import adjusted_rand_score as ari def calculate_ari(true_labels, predicted_labels): score = ari(true_labels, predicted_labels) return score ``` 此外还介绍了轮廓系数(Silhouette Coefficient),这是一种综合考虑样本与其所在簇内的其他成员的距离平均值a(i)(intra-cluster distance average),以及该样本到最近邻近簇的所有成员距离均值b(i)(nearest-cluster distance average)。其具体表达式为: \[ s(i)=\frac{b(i)-a(i)}{\max \left(a(i), b(i)\right)}, i=1,2,\cdots,n \] 其中\(s(i)\)取范围[-1, 1],越接近1说明越好分群。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值