K-Nearest Neighbors (KNN) trong R

Trong ví dụ này, chúng ta sẽ sử dụng thuật toán K-Nearest Neighbors (KNN) để phân loại hoa từ tập dữ liệu Iris. Dưới đây là phần giải thích chi tiết từng bước:


📦 1. Tải thư viện và dữ liệu

library(class)
data(iris)
  • library(class): Gọi thư viện chứa hàm knn().
  • data(iris): Tải dữ liệu Iris có sẵn trong R. Gồm 150 mẫu hoa với 4 đặc trưng: chiều dài và chiều rộng của đài hoa và cánh hoa, cùng nhãn loại hoa (Setosa, Versicolor, Virginica).

✂️ 2. Chia dữ liệu thành tập huấn luyện và kiểm tra

set.seed(42)
sample_index <- sample(1:nrow(iris), 0.8 * nrow(iris))
train_data <- iris[sample_index, ]
test_data <- iris[-sample_index, ]
  • Dữ liệu được chia ngẫu nhiên thành 80% huấn luyện và 20% kiểm tra.
  • set.seed(42): Đảm bảo kết quả chia luôn giống nhau mỗi lần chạy.

📊 3. Tách đặc trưng và nhãn

train_features <- train_data[, 1:4]
train_labels <- train_data[, 5]

test_features <- test_data[, 1:4]
test_labels <- test_data[, 5]
  • Chọn 4 đặc trưng đầu làm dữ liệu đầu vào (features) và cột thứ 5 làm nhãn (labels).

🤖 4. Chạy KNN với k = 3

k <- 3
knn_pred <- knn(train = train_features, test = test_features, cl = train_labels, k = k)
  • Dự đoán loại hoa cho từng mẫu trong tập kiểm tra bằng cách tìm 3 mẫu huấn luyện gần nhất (theo khoảng cách Euclidean).

📈 5. Đánh giá độ chính xác

accuracy <- sum(knn_pred == test_labels) / length(test_labels)
cat(sprintf("Độ chính xác của KNN trên dữ liệu test: %.2f%%\n", accuracy * 100))
  • Tính tỷ lệ phần trăm mẫu được dự đoán đúng.
  • cat() hiển thị kết quả chính xác.

🧪 6. Dự đoán một mẫu hoa mới

new_sample <- data.frame(Sepal.Length=5.1, Sepal.Width=3.5, Petal.Length=1.4, Petal.Width=0.2)
new_pred <- knn(train = train_features, test = new_sample, cl = train_labels, k = k)
cat("Dự đoán mẫu mới thuộc loại hoa:", as.character(new_pred), "\n")
  • Tạo một mẫu mới với các đặc trưng cụ thể.
  • Dự đoán nó thuộc loại hoa nào (ví dụ: "setosa").

Kết quả

Độ chính xác của KNN trên dữ liệu test: 96.67%
Dự đoán mẫu mới thuộc loại hoa: setosa 

Chạy code trên Colab

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

error: Content is protected !!