我有 4 个不同的数据集,每个数据集都包含属于两个类之一的二维样本:1 或 2。每个样本的类标签(1 或 2)位于最后一列。第一列和第二列包含代表样本的 2D 点的坐标。我的任务是:
对于 k-NN 找到 k 的最佳值,并使用 scikit-learn 将其与 1-NN 的值进行比较。
我是机器学习和Python的新手。请让我知道如何找到最佳 k 以及我们必须根据哪种度量选择最佳 k。
请注意,在您的情况下,
k
是一个超参数。要对其进行调整,您需要将数据集拆分为训练集和测试集,并对测试的每个元素进行多次分类,以获得 k 值范围(例如 1 到 20)。计算每种情况下的准确度(或精确度/召回率)。
然后绘制每个 k 的精度值,并选择足够小的 k,这将为您提供“良好”的精度。通常,人们会查看图表的斜率并选择最小的
k
,例如之前的值k-1
会显着降低准确性。
请注意,值
k
在很大程度上取决于您的数据。例如,在下图中(图片来源:https://kevinzakka.github.io/2016/07/13/k-nearest-neighbor/),k
的一个不错选择是 8,因为它会导致最低的错误分类错误。
此链接也可能有帮助:https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm#Parameter_selection