【问题标题】:How to find the best value of k For the k-NN?如何为 k-NN 找到 k 的最佳值?
【发布时间】:2018-03-17 21:27:11
【问题描述】:

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

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

我是机器学习和 python 的新手。请告诉我如何找到最佳 k 以及我们必须根据哪个度量来选择最佳 k。

【问题讨论】:

    标签: python scikit-learn classification data-science knn


    【解决方案1】:

    请注意,在您的情况下,khyperparameter。要对其进行调整,您需要将数据集拆分为训练和测试存储桶,并对 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

    【讨论】:

    • 感谢您的回复。我还有一个疑问......我找到了 k 值,但我得到了超过一个 k 的相同精度。那么在这种情况下我应该选择哪个k?最小 k 值还是最大 k 值?
    • 一般来说,min k 更好,因为您的系统需要更少的信息来产生相同的结果。您还可以尝试多次运行您的实验,并在不同的实验中获得不同 k 的平均准确度。它可能会导致算法的鲁棒性更好。
    猜你喜欢
    • 1970-01-01
    • 2019-08-29
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 2012-04-13
    • 2016-05-06
    • 2021-01-03
    相关资源
    最近更新 更多