도매 데이터 다시 보기: "최적" 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 width 값model$silinfo$avg.width를 추출하세요. 결과 벡터를sil_width로 저장하세요.- k 값과 average silhouette widths 벡터를 포함하는 새 데이터 프레임
sil_df를 만드세요. sil_df의 값을 사용해 k와 average 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)