在 R 中调整 knn train() 命令中的 K

Posted

技术标签:

【中文标题】在 R 中调整 knn train() 命令中的 K【英文标题】:adjusting the K in knn train() command in R 【发布时间】:2018-06-16 16:59:26 【问题描述】:

我正在尝试使用 knn 算法进行分类。我的问题是如何调整算法使用的邻居数量?

例如,我想使用 3、9 和 12? 如何在命令中调整它?

species_knn = train(species ~., method= "knn", data = species, trControl=trainControl(method = 'cv', number = 3))

【问题讨论】:

【参考方案1】:

这是一个使用虹膜数据进行网格搜索的示例:

library(caret)

构建一个你想要调整的超参数网格:

grid = expand.grid(k = c(3, 9, 12)) #in this case data.frame(k = c(3, 9, 12)) will do

在 tuneGrid 参数中提供网格:

species_knn = train(Species ~., method= "knn",
                    data = iris,
                    trControl = trainControl(method = 'cv',
                                             number = 3,
                                             search = "grid"),
                     tuneGrid = grid)
species_knn$results
#output
    k  Accuracy     Kappa AccuracySD      KappaSD
1  3 0.9666667 0.9499560 0.02309401 0.0346808964
2  9 0.9600000 0.9399519 0.00000000 0.0000416525
3 12 0.9533333 0.9299479 0.01154701 0.0173066504

Here 是所有可用模型和超参数的列表。

【讨论】:

以上是关于在 R 中调整 knn train() 命令中的 K的主要内容,如果未能解决你的问题,请参考以下文章

R中的KNN——所有参数必须具有相同的长度,test.X为空

KNN K-最近邻:train_test_split 和 knn.kneighbors

R:你如何计算 KNN 的预测精度?

由 coercion 引入的 NAs 由 knn 中的 coercionError 引入

matlab中的knn函数

scikit-learn中的机器学习算法封装——kNN