You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

digits数据集K-Means聚类演示中各代码命令的作用解释

《Python数据科学手册》digits数据集K-Means代码逐行解析

1. 聚类质心可视化代码解析

对应代码段:

fig, ax = plt.subplots(2, 5, figsize=(8, 3))
centers = kmeans.cluster_centers_.reshape(10, 8, 8)
for axi, center in zip(ax.flat, centers):
    axi.set(xticks=[], yticks=[])
    axi.imshow(center, interpolation='nearest', cmap=plt.cm.binary)

逐行作用说明:

  • centers = kmeans.cluster_centers_.reshape(10, 8, 8):KMeans训练完成后,cluster_centers_属性存储了10个聚类的质心,每个质心是长度为64的一维数组(digits数据集单张手写数字图为88=64像素,拉平成一维输入模型)。这里调用reshape把每个长度64的一维质心还原为8行8列的二维像素矩阵,和原始图片尺寸对齐,最终得到形状为(10,8,8)的质心数组,对应10张88的质心图。
  • for axi, center in zip(ax.flat, centers)::ax.flat会把原本2行5列的二维子图数组展平为一维迭代器,按从左到右、从上到下的顺序依次返回10个子图对象;zip将展平后的子图和10个质心一一配对,每次循环取出1个子图axi和对应的1个质心像素矩阵center。
  • axi.set(xticks=[], yticks=[]):对当前子图设置坐标轴属性,传入空列表作为刻度值,直接隐藏x、y轴的所有刻度标记,避免多余坐标元素干扰图片查看。
  • axi.imshow(center, interpolation='nearest', cmap=plt.cm.binary):将8*8的质心像素矩阵渲染为图片:interpolation='nearest'使用最近邻插值,保证渲染出的像素块边缘锐利无模糊;cmap=plt.cm.binary指定二值灰度配色,像素值越高越接近黑色,越低越接近白色,和digits数据集原生的手写数字显示逻辑一致。

2. 聚类标签匹配代码解析

对应代码段:

from scipy.stats import mode
labels = np.zeros_like(clusters)
for i in range(10):
    mask = (clusters == i)
    labels[mask] = mode(digits.target[mask])[0]

逐行作用说明:

  • from scipy.stats import mode:导入scipy统计模块中的众数计算函数,用于返回一组数据中出现频次最高的值。
  • labels = np.zeros_like(clusters):生成和clusters数组(即fit_predict返回的每个样本所属聚类编号的数组,长度等于总样本数)形状、数据类型完全一致的全0数组,用于存储每个聚类匹配到的真实数字标签。
  • for i in range(10)::遍历0-9共10个聚类的编号。
  • mask = (clusters == i):生成布尔掩码数组,长度和总样本数一致,所有被划分到第i个聚类的样本对应位置为True,其余位置为False,用于快速筛选同属一个聚类的样本。
  • labels[mask] = mode(digits.target[mask])[0]:完成单聚类的标签匹配:
    1. 用布尔掩码mask筛出所有属于第i个聚类的样本的真实标签(即这些手写数字实际对应的0-9数值)
    2. 对这批真实标签调用mode()计算众数,也就是该聚类中占比最高的真实数字——因为KMeans是无监督模型,聚类编号本身没有语义,这个众数就是该聚类最可能代表的真实数字;mode()返回的结果中索引为0的元素就是众数的具体数值
    3. 将计算得到的众数赋值给labels数组中所有属于第i个聚类的样本位置,完成该聚类所有样本的真实标签映射。

内容的提问来源于stack exchange,提问作者randomguy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 03:30:59