You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R的train()函数中调整KNN算法的邻居数K?

调整KNN算法的邻居数量(k值)

嘿,刚好熟悉caret包的train()函数用法,这就帮你搞定指定k值的问题!

在你现有的代码里,train()默认会自动搜索一组k值来做调优,但如果你想指定精确的3、9、12这三个邻居数,只需要添加tuneGrid参数就可以了,具体步骤如下:

步骤1:创建指定k值的参数网格

首先,你需要构建一个数据框,列名必须是k(因为caret中KNN算法对应的参数名就是k),把你想要的k值放进去:

# 定义要测试的k值集合
tune_grid <- data.frame(k = c(3, 9, 12))

步骤2:修改train函数,加入参数网格

把上面的tune_grid传入train()的tuneGrid参数中,修改后的完整代码如下:

species_knn <- train(
  species ~ ., 
  method = "knn", 
  data = species, 
  trControl = trainControl(method = 'cv', number = 3),
  tuneGrid = tune_grid  # 新增这一行,指定要测试的k值
)

额外说明

  • 运行完这段代码后,你可以通过print(species_knn)查看每个k值对应的交叉验证结果,caret会自动选择表现最优的k值作为最终模型的参数。
  • 如果你之后想测试更多k值,只需要修改tune_grid里的向量内容就行,比如c(5,7,10)这类组合。

内容的提问来源于stack exchange,提问作者MCL94

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:31:11