시작하기무료로 시작하기

도매 데이터 다시 보기: "최적" k

Chapter 2의 마지막에서 customers_spend 도매 유통업체 데이터를 계층적 클러스터링으로 살펴보셨죠. 이번에는 이 장에서 다룬 k-means 클러스터링 도구를 사용해 같은 데이터를 분석해 보겠습니다.

첫 단계로 average silhouette width를 사용해 "최적의" k 값을 정해볼 거예요.

데이터를 간단히 상기해 볼게요. 이 데이터에는 도매 유통업체의 45개 서로 다른 고객이 Milk, Grocery, Frozen 식품 범주에 지출한 금액이 기록되어 있으며, 데이터 프레임 customers_spend에 담겨 있습니다. 이 연습 문제에서는 모든 변수가 같은 유형(지출 금액)이므로 스케일링이 필요 없다고 가정해도 됩니다.

이 연습은 강의의 일부입니다

R로 배우는 군집 분석

강의 보기

연습 안내

  • map_dbl()을 사용해 k 값을 2에서 10까지 바꿔 가며 customers_spend 데이터로 pam()을 실행하고, 각 모델에서 average silhouette widthmodel$silinfo$avg.width를 추출하세요. 결과 벡터를 sil_width로 저장하세요.
  • k 값과 average silhouette widths 벡터를 포함하는 새 데이터 프레임 sil_df를 만드세요.
  • sil_df의 값을 사용해 kaverage silhouette width의 관계를 보여주는 선 그래프를 그리세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# 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)
코드 편집 및 실행