无需登录 数据私有 本地保存

数据分类演示器 - 手写数字k-NN模拟

13
0
0
0

手写数字 k-NN 分类演示器

在画布上绘制数字,体验 k-最近邻算法 如何识别手写数字

交互式演示
绘制数字
快速加载预设数字:
画笔粗细: 18px
算法参数
3
分类结果

在左侧画布绘制数字,然后点击 "识别数字"

或点击预设数字按钮快速体验
训练数据集预览 30个样本
常见问题 & 知识点
什么是 k-NN(k-最近邻)算法?

k-NN(k-Nearest Neighbors) 是一种简单而强大的监督学习算法,用于分类和回归。它的核心思想非常直观:

  • 特征空间:每个样本都是多维空间中的一个点(本工具中,每个数字被降采样为8×8=64维向量)。
  • 距离计算:计算未知样本与所有训练样本之间的距离。
  • 投票决策:找出距离最近的 k 个邻居,由它们投票决定分类结果。

📌 k-NN 属于"惰性学习"算法,它不进行显式训练,而是在预测时才计算距离。

k 值如何选择?有什么影响?

k 值 是 k-NN 中最重要的超参数:

  • k 太小(如 k=1):模型对噪声敏感,容易过拟合,单个异常点就能改变结果。
  • k 太大(如 k=15):决策边界过于平滑,可能忽略局部特征,导致欠拟合。
  • 经验法则:通常取 k = √N(N 为训练样本总数),或通过交叉验证选择。本工具默认 k=3,适合30个样本的数据集。

💡 在本工具中,你可以拖动滑块调整 k 值,观察不同 k 值对分类结果的影响。

欧几里得距离 vs 曼哈顿距离,有什么区别?

两种距离度量方式在计算"远近"时有本质不同:

  • 欧几里得距离:直线距离("乌鸦飞行"),√(Σ(xᵢ-yᵢ)²)。对较大差异更敏感(平方放大)。
  • 曼哈顿距离:坐标轴方向距离之和("城市街区"),Σ|xᵢ-yᵢ|。对异常值更鲁棒。

🔍 在手写数字识别中,两种度量通常给出相似结果,但欧几里得距离更常用。

为什么需要降采样到 8×8 网格?

降采样(从280×280像素到8×8网格)有多个目的:

  • 降维:原始280×280=78,400维太高,计算距离极慢且容易受像素级噪声影响。
  • 特征提取:8×8=64维保留了数字的宏观形状特征,忽略细微抖动。
  • 泛化能力:粗粒度的特征使得不同书写风格的数字更容易匹配。

📐 这类似于 MNIST 数据集使用 28×28 像素,但在本演示中 8×8 足以区分 0-9。

k-NN 算法有哪些优缺点?

优点:简单直观、无需训练过程、适用于多分类问题、可处理非线性边界。

缺点

  • 计算成本高(每次预测需遍历全部训练数据)。
  • 对特征缩放敏感(需归一化)。
  • 受维度灾难影响(高维空间距离区分度下降)。
  • 需要合理选择 k 值和距离度量。

⚡ 对于小规模数据集(如本工具30个样本),k-NN 是非常实用的选择。

置信度是如何计算的?

置信度 = 获胜类别的票数 ÷ k值 × 100%。

例如:k=5,最近邻中3个是数字"3",2个是数字"8",则预测为"3",置信度 = 3/5 = 60%

📊 置信度越高说明预测越可靠。如果多个类别票数接近,说明输入数字可能位于类别边界。