Para el siguiente caso propuesto, Cargaremos la data del repositorio en github.

data=read.csv("https://raw.githubusercontent.com/VictorGuevaraP/BI/master/CINE%20PREFERIDO.csv",sep = ";",header = TRUE)
head(data)

Ahora seleccionaremos solo las 5 primeras columnas

data=data[,1:5]
str(data)
'data.frame':   500 obs. of  5 variables:
 $ edad               : int  37 32 51 37 43 75 27 38 79 12 ...
 $ frecuencia_mensual : int  1 4 2 4 6 5 2 6 14 5 ...
 $ Genero_peli        : chr  "Romance" "Suspenso" "Suspenso" "Ciencia Ficción" ...
 $ Gasto              : int  80 75 83 77 72 75 83 72 43 75 ...
 $ Numero_acompañantes: int  6 1 1 2 6 1 2 3 3 5 ...

A continuación, vamos a cambiar los géneros de película por números.

data$Genero_peli[data$Genero_peli == "Romance"] <- 1
data$Genero_peli[data$Genero_peli == "Suspenso"] <- 2
data$Genero_peli[data$Genero_peli == "Ciencia Ficción"] <- 3
data$Genero_peli[data$Genero_peli == "Terror"] <- 4
data$Genero_peli[data$Genero_peli == "Accion y drama"] <- 5
data$Genero_peli[data$Genero_peli == "Comedia"] <- 6
data$Genero_peli[data$Genero_peli == "Dibujos animados"] <- 7
data$Genero_peli=as.numeric(data$Genero_peli)
str(data)
'data.frame':   500 obs. of  5 variables:
 $ edad               : int  37 32 51 37 43 75 27 38 79 12 ...
 $ frecuencia_mensual : int  1 4 2 4 6 5 2 6 14 5 ...
 $ Genero_peli        : num  1 2 2 3 4 2 5 1 1 2 ...
 $ Gasto              : int  80 75 83 77 72 75 83 72 43 75 ...
 $ Numero_acompañantes: int  6 1 1 2 6 1 2 3 3 5 ...

Ahora aplicaremos el método del codo para saber en cuántos clusters agrupar la informacion.

wss=double()
for (k in 2:10){
  set.seed(111)
  segmentcodo=kmeans(data,k)
  wss[k-1]=segmentcodo$tot.withinss
}
plot(2:10,wss,type="b")

Como vemos la curva se acentúa en el punto 3, así que haremos 3 grupos.

clust=kmeans(data,3)
print(clust)
K-means clustering with 3 clusters of sizes 133, 190, 177

Cluster means:
      edad frecuencia_mensual Genero_peli    Gasto
1 74.13534           7.045113    3.849624 66.97744
2 35.42105          13.536842    3.926316 45.62632
3 34.10734           3.293785    3.813559 79.55932
  Numero_acompañantes
1            3.157895
2            2.800000
3            2.841808

Clustering vector:
  [1] 3 3 3 3 3 1 3 3 1 3 1 1 2 3 1 1 3 3 2 2 2 1 3 1 3 1 3 3 1 1 2 1
 [33] 3 2 3 3 2 1 3 1 2 1 2 1 3 3 3 1 2 2 2 2 2 1 2 3 2 3 1 1 3 2 3 2
 [65] 2 1 3 2 2 2 1 2 2 3 3 3 3 2 3 3 3 1 2 3 2 3 1 2 1 3 1 3 1 1 2 1
 [97] 2 1 2 2 1 1 2 2 3 1 3 1 2 2 2 3 2 2 2 1 2 1 1 3 2 1 3 1 2 3 2 1
[129] 2 2 2 2 2 2 3 1 2 3 2 2 1 1 2 1 1 2 3 2 2 1 1 2 2 2 2 3 2 2 3 2
[161] 1 3 3 3 2 2 2 2 3 1 2 3 2 1 3 1 3 3 2 3 3 1 1 2 3 2 2 3 1 1 1 1
[193] 2 2 1 3 3 3 3 2 2 3 2 2 1 1 1 1 3 2 1 3 1 2 2 1 1 2 3 3 3 3 2 1
[225] 3 2 3 2 2 1 2 1 3 3 1 3 1 2 3 1 1 3 1 3 3 3 1 1 3 3 1 2 2 2 2 3
[257] 2 3 3 2 2 3 3 3 3 2 2 2 3 2 1 1 2 3 3 1 2 2 1 3 2 2 3 3 2 3 2 2
[289] 3 1 3 1 3 2 1 2 3 3 3 2 2 1 3 2 3 3 3 1 3 2 2 2 3 3 3 1 3 3 2 3
[321] 3 3 2 1 1 2 1 2 1 3 2 2 1 3 1 2 2 2 1 1 1 1 2 2 3 2 3 1 3 2 3 2
[353] 1 1 1 3 2 3 2 2 3 3 2 3 1 3 2 3 1 2 2 3 2 3 1 3 2 2 2 2 2 1 1 2
[385] 1 1 1 3 2 3 1 1 3 1 3 2 3 1 3 3 3 3 3 1 2 2 3 3 1 2 3 2 2 2 2 2
[417] 2 3 3 2 3 2 3 1 3 3 2 3 3 2 2 3 2 2 2 2 1 3 1 2 3 2 3 3 3 3 2 2
[449] 2 3 2 3 2 1 1 2 1 1 3 3 3 2 1 1 1 1 3 2 3 2 2 3 2 2 2 3 3 1 2 1
[481] 2 2 2 1 1 3 3 3 3 3 3 1 2 2 2 1 2 1 2 2

Within cluster sum of squares by cluster:
[1] 47364.90 72203.39 26513.73
 (between_SS / total_SS =  64.8 %)

Available components:

[1] "cluster"      "centers"      "totss"        "withinss"    
[5] "tot.withinss" "betweenss"    "size"         "iter"        
[9] "ifault"      

Ahora vamos a agrupar el cluster y la data que teníamos.

grupo=clust$cluster
segmentacion=cbind(data,grupo)
head(segmentacion)

Y plotearemos los grupos y la segmentación hecha.

library(cluster)
clusplot(segmentacion,grupo)

A continuación, tenemos una comparación entre los gastos y la frecuencia mensual de los consumidores.

plot(segmentacion$frecuencia_mensual ,segmentacion$Gasto ,col=segmentacion$grupo)

Del gráfico anterior podemos ver que, las personas que van menos veces al cine, gastan más que las personas que suelen acudir constantemente.

LS0tDQp0aXRsZTogIkNsdXN0ZXJpbmcgQ2luZSINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdA0KICB3b3JkX2RvY3VtZW50OiBkZWZhdWx0DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgZGZfcHJpbnQ6IHBhZ2VkDQogIHBkZl9kb2N1bWVudDogZGVmYXVsdA0KLS0tDQoNClBhcmEgZWwgc2lndWllbnRlIGNhc28gcHJvcHVlc3RvLCBDYXJnYXJlbW9zIGxhIGRhdGEgZGVsIHJlcG9zaXRvcmlvIGVuIGdpdGh1Yi4NCg0KYGBge3J9DQpkYXRhPXJlYWQuY3N2KCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVmljdG9yR3VldmFyYVAvQkkvbWFzdGVyL0NJTkUlMjBQUkVGRVJJRE8uY3N2IixzZXAgPSAiOyIsaGVhZGVyID0gVFJVRSkNCmhlYWQoZGF0YSkNCmBgYA0KDQoNCkFob3JhIHNlbGVjY2lvbmFyZW1vcyBzb2xvIGxhcyA1IHByaW1lcmFzIGNvbHVtbmFzDQoNCmBgYHtyfQ0KZGF0YT1kYXRhWywxOjVdDQpzdHIoZGF0YSkNCmBgYA0KDQoNCkEgY29udGludWFjacOzbiwgdmFtb3MgYSBjYW1iaWFyIGxvcyBnw6luZXJvcyBkZSBwZWzDrWN1bGEgcG9yIG7Dum1lcm9zLg0KDQpgYGB7cn0NCmRhdGEkR2VuZXJvX3BlbGlbZGF0YSRHZW5lcm9fcGVsaSA9PSAiUm9tYW5jZSJdIDwtIDENCmRhdGEkR2VuZXJvX3BlbGlbZGF0YSRHZW5lcm9fcGVsaSA9PSAiU3VzcGVuc28iXSA8LSAyDQpkYXRhJEdlbmVyb19wZWxpW2RhdGEkR2VuZXJvX3BlbGkgPT0gIkNpZW5jaWEgRmljY2nDs24iXSA8LSAzDQpkYXRhJEdlbmVyb19wZWxpW2RhdGEkR2VuZXJvX3BlbGkgPT0gIlRlcnJvciJdIDwtIDQNCmRhdGEkR2VuZXJvX3BlbGlbZGF0YSRHZW5lcm9fcGVsaSA9PSAiQWNjaW9uIHkgZHJhbWEiXSA8LSA1DQpkYXRhJEdlbmVyb19wZWxpW2RhdGEkR2VuZXJvX3BlbGkgPT0gIkNvbWVkaWEiXSA8LSA2DQpkYXRhJEdlbmVyb19wZWxpW2RhdGEkR2VuZXJvX3BlbGkgPT0gIkRpYnVqb3MgYW5pbWFkb3MiXSA8LSA3DQpkYXRhJEdlbmVyb19wZWxpPWFzLm51bWVyaWMoZGF0YSRHZW5lcm9fcGVsaSkNCnN0cihkYXRhKQ0KYGBgDQoNCg0KQWhvcmEgYXBsaWNhcmVtb3MgZWwgbcOpdG9kbyBkZWwgY29kbyBwYXJhIHNhYmVyIGVuIGN1w6FudG9zIGNsdXN0ZXJzIGFncnVwYXIgbGEgaW5mb3JtYWNpb24uDQoNCmBgYHtyfQ0Kd3NzPWRvdWJsZSgpDQpmb3IgKGsgaW4gMjoxMCl7DQogIHNldC5zZWVkKDExMSkNCiAgc2VnbWVudGNvZG89a21lYW5zKGRhdGEsaykNCiAgd3NzW2stMV09c2VnbWVudGNvZG8kdG90LndpdGhpbnNzDQp9DQpwbG90KDI6MTAsd3NzLHR5cGU9ImIiKQ0KYGBgDQoNCg0KQ29tbyB2ZW1vcyBsYSBjdXJ2YSBzZSBhY2VudMO6YSBlbiBlbCBwdW50byAzLCBhc8OtIHF1ZSBoYXJlbW9zIDMgZ3J1cG9zLg0KDQpgYGB7cn0NCmNsdXN0PWttZWFucyhkYXRhLDMpDQpwcmludChjbHVzdCkNCmBgYA0KDQoNCkFob3JhIHZhbW9zIGEgYWdydXBhciBlbCBjbHVzdGVyIHkgbGEgZGF0YSBxdWUgdGVuw61hbW9zLg0KDQpgYGB7cn0NCmdydXBvPWNsdXN0JGNsdXN0ZXINCnNlZ21lbnRhY2lvbj1jYmluZChkYXRhLGdydXBvKQ0KaGVhZChzZWdtZW50YWNpb24pDQpgYGANCg0KDQpZIHBsb3RlYXJlbW9zIGxvcyBncnVwb3MgeSBsYSBzZWdtZW50YWNpw7NuIGhlY2hhLg0KDQpgYGB7cn0NCmxpYnJhcnkoY2x1c3RlcikNCmNsdXNwbG90KHNlZ21lbnRhY2lvbixncnVwbykNCmBgYA0KDQoNCkEgY29udGludWFjacOzbiwgdGVuZW1vcyB1bmEgY29tcGFyYWNpw7NuIGVudHJlIGxvcyBnYXN0b3MgeSBsYSBmcmVjdWVuY2lhIG1lbnN1YWwgZGUgbG9zIGNvbnN1bWlkb3Jlcy4NCg0KYGBge3J9DQpwbG90KHNlZ21lbnRhY2lvbiRmcmVjdWVuY2lhX21lbnN1YWwgLHNlZ21lbnRhY2lvbiRHYXN0byAsY29sPXNlZ21lbnRhY2lvbiRncnVwbykNCmBgYA0KDQoNCkRlbCBncsOhZmljbyBhbnRlcmlvciBwb2RlbW9zIHZlciBxdWUsIGxhcyBwZXJzb25hcyBxdWUgdmFuIG1lbm9zIHZlY2VzIGFsIGNpbmUsIGdhc3RhbiBtw6FzIHF1ZSBsYXMgcGVyc29uYXMgcXVlIHN1ZWxlbiBhY3VkaXIgY29uc3RhbnRlbWVudGUuDQoNCg==