Xem lại dữ liệu bán buôn: k "tốt nhất"
Cuối Chương 2 bạn đã khám phá dữ liệu nhà phân phối bán buôn customers_spend bằng phân cụm phân cấp. Lần này bạn sẽ phân tích dữ liệu này bằng k-means theo những gì đã học trong chương này.
Bước đầu tiên là xác định giá trị k "tốt nhất" bằng độ rộng silhouette trung bình.
Ôn lại về dữ liệu: dữ liệu chứa số tiền chi tiêu của 45 khách hàng khác nhau của một nhà phân phối bán buôn cho các nhóm thực phẩm Milk, Grocery và Frozen. Dữ liệu được lưu trong data frame customers_spend. Với bài này bạn có thể giả định rằng vì tất cả dữ liệu cùng một loại (số tiền chi tiêu) nên bạn không cần chuẩn hóa (scale) dữ liệ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ạypam()với dữ liệucustomers_spendcho các giá trị k từ 2 đến 10 và trích xuất giá trị độ rộng silhouette trung bình từ mỗi mô hình:model$silinfo$avg.width. Lưu vector kết quả vàosil_width. - Tạo một data frame mới
sil_dfchứa các giá trị k và vector độ rộng silhouette trung bình. - Dùng các giá trị trong
sil_dfđể vẽ biểu đồ đường thể hiện mối quan hệ giữa k và độ rộng silhouette trung bình.
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
sil_width <- map_dbl(2:10, function(k){
model <- pam(x = ___, k = ___)
model$silinfo$avg.width
})
# Generate a data frame containing both k and sil_width
sil_df <- data.frame(
k = ___,
sil_width = ___
)
# Plot the relationship between k and sil_width
ggplot(___, aes(x = ___, y = ___)) +
geom_line() +
scale_x_continuous(breaks = 2:10)