“Точность KNN в R: изучение методов и примеры кода”
В этой статье блога мы углубимся в тему точности K-ближайших соседей (KNN) в R. KNN — это популярный алгоритм машинного обучения, используемый для задач классификации и регрессии. Мы рассмотрим различные методы оценки точности моделей KNN в R, а также приведем примеры кода, иллюстрирующие каждый подход. К концу этой статьи вы получите полное представление о различных методах оценки точности KNN в R.
Методы оценки точности KNN в R:
-
Метод разделения Train-Test.
Одним из распространенных подходов к оценке точности KNN является разделение набора данных на два подмножества: обучающий набор и тестовый набор. Обучающий набор используется для обучения модели KNN, а тестовый набор используется для оценки ее точности. Вот пример фрагмента кода:library(class) # Load dataset data(iris) # Set random seed for reproducibility set.seed(123) # Split data into training set (70%) and test set (30%) train_indices <- sample(1:nrow(iris), 0.7 * nrow(iris)) train_data <- iris[train_indices, ] test_data <- iris[-train_indices, ] # Train KNN model knn_model <- knn(train_data[, -5], test_data[, -5], train_data[, 5], k = 3) # Assess accuracy accuracy <- sum(knn_model == test_data[, 5]) / nrow(test_data) -
Метод перекрестной проверки.
Перекрестная проверка — это еще один метод оценки точности модели KNN. Он включает в себя разделение набора данных на несколько подмножеств (складок) и итеративное обучение и тестирование модели на различных комбинациях сгибов. Вот пример фрагмента кода:library(class) library(caret) # Load dataset data(iris) # Set random seed for reproducibility set.seed(123) # Define control parameters for cross-validation ctrl <- trainControl(method = "cv", number = 10) # Train KNN model using cross-validation knn_model <- train(Species ~ ., data = iris, method = "knn", trControl = ctrl) # Extract accuracy from the cross-validation results accuracy <- knn_model$results$Accuracy -
Метод перекрестной проверки с исключением одного исключения (LOOCV):
LOOCV — это особый случай перекрестной проверки, при котором каждая точка данных служит тестовым набором один раз, а остальные точки данных используется для обучения. Этот метод полезен для небольших наборов данных. Вот пример фрагмента кода:library(class) # Load dataset data(iris) # Train KNN model using LOOCV knn_model <- knn.cv(iris[, -5], iris[, 5], k = 3) # Calculate accuracy accuracy <- sum(knn_model == iris[, 5]) / nrow(iris) -
Метод стратифицированной выборки.
Стратифицированная выборка гарантирует, что обучающий и тестовый наборы имеют пропорциональное распределение классов. Это особенно полезно при работе с несбалансированными наборами данных. Вот пример фрагмента кода:library(caret) # Load dataset data(iris) # Set random seed for reproducibility set.seed(123) # Split data into training set (70%) and test set (30%) with stratified sampling split <- createDataPartition(iris$Species, p = 0.7, list = FALSE) train_data <- iris[split, ] test_data <- iris[-split, ] # Train KNN model knn_model <- knn(train_data[, -5], test_data[, -5], train_data[, 5], k = 3) # Assess accuracy accuracy <- sum(knn_model == test_data[, 5]) / nrow(test_data)