如何在 KNN 模型中定义 k 的最佳值?

数据挖掘 机器学习 k-nn
2022-02-27 13:43:23

这是我在 Rstudio 中的脚本:

library(class)
library(ggplot2)
library(gmodels)
library(scales)
library(caret)
library(tidyverse)
library(caret)

db_data <- iris
row_train <- sample(nrow(iris), nrow(iris)*0.8)
db_train <- iris[row_train,]
db_test <- iris[-row_train,]

unique(db_train$Species)
table(db_train$Species)
#--------

#KNN
#-------
model_knn<-train(Species ~ ., data = db_train, method = "knn",tuneGrid = data.frame(k = 12))
summary(model_knn)
#-------

#PREDICTION NEW RECORD
#-------
test_data <- db_test
db_test$predict <- predict(model_knn, newdata=test_data, interval='confidence')
confusionMatrix(data=factor(db_test$predict),reference=factor(db_test$Species))
#-------

如何在 KNN 模型中定义 k 的最佳值?

2个回答

通常您将使用交叉验证来找到最佳模型(超)参数。

有关R 中 KNN 的应用程序,请参阅此帖子。

你也可以看看《统计学习概论》一书。5(重采样方法)以了解有关交叉验证的更多信息。

根据我的尝试,没有有效的方法可以知道哪个 K 最适合您的 KNN 模型。你可以尝试设置不同的值,看看你的模型如何根据不同的值表现,也许可以尝试绘制错误率和 K。

您可以在这里阅读更多相关信息:https ://towardsdatascience.com/how-to-find-the-optimal-value-of-k-in-knn-35d936e554eb