K-means: Phân tích Elbow
Trong các bài trước, bạn đã dùng dendrogram để đề xuất một cách phân cụm tạo ra 3 cụm. Trong bài này, bạn sẽ tận dụng biểu đồ elbow của k-means để đề xuất số cụm "tối ưu".
Bài tập này là một phần của khóa học
Phân cụm bằng R
Hướng dẫn bài tập
- Dùng
map_dbl()để chạykmeans()với dữ liệuoescho các giá trị k từ 1 đến 10 và trích xuất giá trị tổng phương sai trong cụm từ mỗi mô hình:model$tot.withinss. Lưu vector kết quả vàotot_withinss. - Tạo một data frame mới
elbow_dfchứa các giá trị k và vector tổng phương sai trong cụm. - Dùng các giá trị trong
elbow_dfđể vẽ biểu đồ đường thể hiện mối quan hệ giữa k và tổng phương sai trong cụm.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Use map_dbl to run many models with varying value of k (centers)
tot_withinss <- map_dbl(1:10, function(k){
model <- kmeans(x = ___, centers = ___)
model$tot.withinss
})
# Generate a data frame containing both k and tot_withinss
elbow_df <- data.frame(
k = ___,
tot_withinss = ___
)
# Plot the elbow plot
ggplot(elbow_df, aes(x = ___, y = ___)) +
geom_line() +
scale_x_continuous(breaks = 1:10)