Revisita de los datos de mayorista: k "óptimo"
Al final del Capítulo 2 exploraste los datos de un distribuidor mayorista customers_spend usando clustering jerárquico. Esta vez analizarás esos datos con las herramientas de k-means vistas en este capítulo.
El primer paso será determinar el valor "óptimo" de k usando la anchura media del contorno (silhouette).
Recordatorio sobre los datos: contienen registros del gasto de 45 clientes de un distribuidor mayorista en las categorías de alimentación Milk, Grocery y Frozen. Esto está almacenado en el data frame customers_spend. Para este ejercicio puedes asumir que, como todos los datos son del mismo tipo (cantidad gastada), no necesitarás escalarlos.
Este ejercicio forma parte del curso
Análisis de clústeres en R
Instrucciones del ejercicio
- Usa
map_dbl()para ejecutarpam()con los datos decustomers_spendpara valores de k de 2 a 10 y extrae la anchura media del contorno (silhouette) de cada modelo:model$silinfo$avg.width. Guarda el vector resultante comosil_width. - Crea un nuevo data frame
sil_dfque contenga los valores de k y el vector de anchuras medias del contorno. - Usa los valores de
sil_dfpara trazar un gráfico de líneas que muestre la relación entre k y la anchura media del contorno.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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)