Machine learning 使用带数值的KNN进行分类

Machine learning 使用带数值的KNN进行分类,machine-learning,Machine Learning,我对matlab是新手。对我来说,任务是对一些数据集执行数据分类。给定的数据集由数值组成。有一件事困扰着我,那就是我必须完成所有的KNN,ANN,SVM。在执行KNN时,我遇到了一个问题,比如如何找到K的值。如果它是用户定义的,那么我们必须从哪个值开始以及何时停止它。如果有人回答我的问题,我将非常感谢。这些模型中的每一个都有一些必须“手动”找到的元参数: ANN-隐藏节点数、学习率、动量率 SVM-核类型,C值,gamma(对于poly/RBF核) KNN-使用的度量,投票权重方案,K 正确

我对matlab是新手。对我来说,任务是对一些数据集执行数据分类。给定的数据集由数值组成。有一件事困扰着我,那就是我必须完成所有的KNN,ANN,SVM。在执行KNN时,我遇到了一个问题,比如如何找到K的值。如果它是用户定义的,那么我们必须从哪个值开始以及何时停止它。如果有人回答我的问题,我将非常感谢。

这些模型中的每一个都有一些必须“手动”找到的元参数:

  • ANN-隐藏节点数、学习率、动量率
  • SVM-核类型,C值,gamma(对于poly/RBF核)
  • KNN-使用的度量,投票权重方案,K
正确的评估必须测试上述的许多组合,更重要的是,模型本身应选择这些组合。因此,检查一些值集并选择得分最高的值在方法上是错误的。这通常是通过将训练数据(训练测试分割后)分割为训练和验证,然后执行参数的内部测试(根据训练数据进行训练),并选择产生最佳结果的参数(根据验证数据),以便最终给出整个模型的结果分数(根据测试数据)

我们必须从哪个值开始,何时停止。如果有人回答我的问题,我将不胜感激


KNN对于每个自然K都有很好的定义,从1开始,以示例数结束。然而,它通常在{1,5,10,15}中的K上进行测试(只是经验法则而已)。

好吧,就
KNN
而言,
K
的值决定为
n
的平方根,即训练示例的数量。因此,如果您有100个培训示例,
k
的值应该是10。然而,这同样只是一个经验法则

来源:Brett-Lantz使用R进行机器学习