《机器学习(周志华)》 习题9.4参考答案

本文介绍了在实现K均值算法过程中发现书本示例的错误,并通过编程不仅纠正了错误,还利用matplotlib.animation模块创建了聚类过程的动态图。展示了如何对50个随机点进行4类聚类的动态效果。

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

实现K均值算法。。。

书上的例子是错的!那个数据集,用书上选的那几个初始点,则一开始就是收敛的。

实现时,顺便学了matplotlib.animation,可以把聚类过程用动态图显示出来。

代码如下:

# coding: utf-8
import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt
import matplotlib.animation as animation 
import random
import itertools


def rand_RGB():
	return np.random.random(3)


def cal_dis(x, y):
	return np.linalg.norm(x-y)
	# return sum(np.abs(x-y))


def Kmeans(nb_cluster, points):
	nb_sample = len(points)
	init_points_id = random.choice(list(itertools.combinations(range(nb_sample), nb_cluster)))
	centers = points[init_points_id, :]
	colors = [rand_RGB() for i in range(nb_cluster)]
	# colors = ['r', 'g', 'b']
	imgs = []
	max_iter = 100
	for _ i
### 周志华机器学习》第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、付费专栏及课程。

余额充值