Исследование точности KNN в R: методы и примеры кода

“Точность KNN в R: изучение методов и примеры кода”

В этой статье блога мы углубимся в тему точности K-ближайших соседей (KNN) в R. KNN — это популярный алгоритм машинного обучения, используемый для задач классификации и регрессии. Мы рассмотрим различные методы оценки точности моделей KNN в R, а также приведем примеры кода, иллюстрирующие каждый подход. К концу этой статьи вы получите полное представление о различных методах оценки точности KNN в R.

Методы оценки точности KNN в R:

  1. Метод разделения 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)
  2. Метод перекрестной проверки.
    Перекрестная проверка — это еще один метод оценки точности модели 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
  3. Метод перекрестной проверки с исключением одного исключения (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)
  4. Метод стратифицированной выборки.
    Стратифицированная выборка гарантирует, что обучающий и тестовый наборы имеют пропорциональное распределение классов. Это особенно полезно при работе с несбалансированными наборами данных. Вот пример фрагмента кода:

    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)