如何在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
相关产品推荐
相关产品推荐

