1

我正在尝试为 K 最近邻算法找到 K 的最佳值。我一直在 Matlab 上针对不同数量的类成员运行这种分类方法,但是当我们使用不同的 K 值时,我需要计算错误率。我试图以这个想法为例:

我有以下数据集:

1 3 1

2 3 2

2 1 2

3 3 2

3 4 1

3 3 2

2 2 2

第一列是 x 轴,第二列是 y 轴,第三列是类的标签,我需要使用 K-NN 算法对点 (x,y) 进行分类。我正在使用不同的 K 值。我的问题是我是否知道该点 (4,1) 不包含在源数据集中,但我知道它来自类标签 1。如何计算基于Leave-one-out-cross-validation方法的某个K值。

非常感谢你提前

问候

里纳迪

4

1 回答 1

3

留一法交叉验证的意思很简单,给定您的模型m、训练集T大小n和一些评估指标(误差度量)E,您可以按如下方式进行:

  1. (x,y)对于来自的每个点T
    1. 你训练你的模型(除了 1 中的点之外mT\(x,y)所有点。)
    2. 你检查E( m , (x,y) ),例如你检查是否m能够正确确定y给定x(然后E=0)或不(和E=1)
  2. 您计算E所有分析点的所有值的平均值

结果,您有一个平均泛化误差估计 - 您检查了您的模型可以预测一个点的标签,并在训练集的其余部分进行训练。

于 2013-10-06T05:37:44.823 回答