Bắt đầu ngayBắt đầu miễn phí

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, GroceryFrozen. 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

Xem khóa học

Hướng dẫn bài tập

  • Dùng map_dbl() để chạy pam() với dữ liệu customers_spend cho 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ào sil_width.
  • Tạo một data frame mới sil_df chứ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độ 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)
Chỉnh sửa và Chạy Mã