如何找到 k-NN 的最佳 k 值?

问题描述 投票:0回答:1

我有 4 个不同的数据集,每个数据集都包含属于两个类之一的二维样本:1 或 2。每个样本的类标签(1 或 2)位于最后一列。第一列和第二列包含代表样本的 2D 点的坐标。我的任务是:

对于 k-NN 找到 k 的最佳值,并使用 scikit-learn 将其与 1-NN 的值进行比较。

我是机器学习和Python的新手。请让我知道如何找到最佳 k 以及我们必须根据哪种度量选择最佳 k。

machine-learning scikit-learn classification knn
1个回答
1
投票

请注意,在您的情况下,

k
是一个超参数。要对其进行调整,您需要将数据集拆分为训练集和测试集,并对测试的每个元素进行多次分类,以获得 k 值范围(例如 1 到 20)。计算每种情况下的准确度(或精确度/召回率)。

然后绘制每个 k 的精度值,并选择足够小的 k,这将为您提供“良好”的精度。通常,人们会查看图表的斜率并选择最小的

k
,例如之前的值
k-1
会显着降低准确性。

请注意,值

k
在很大程度上取决于您的数据。例如,在下图中(图片来源:https://kevinzakka.github.io/2016/07/13/k-nearest-neighbor/),
k
的一个不错选择是 8,因为它会导致最低的错误分类错误。

enter image description here

此链接也可能有帮助:https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm#Parameter_selection

© www.soinside.com 2019 - 2024. All rights reserved.