#Instalar paquetes

library("cluster")
library("ggplot2")
library("data.table")
library("factoextra")

#Obtener los datos

df <- data.frame(x=c(2,2,8,5,7,6,1,4),y=c(10,5,4,8,5,4,2,9))

#Cantidad de grupos

grupos <- 3

#Generar segmentos

segmentos <- kmeans(df,grupos)
segmentos
## K-means clustering with 3 clusters of sizes 3, 2, 3
## 
## Cluster means:
##          x        y
## 1 3.666667 9.000000
## 2 1.500000 3.500000
## 3 7.000000 4.333333
## 
## Clustering vector:
## [1] 1 2 3 1 3 3 2 1
## 
## Within cluster sum of squares by cluster:
## [1] 6.666667 5.000000 2.666667
##  (between_SS / total_SS =  85.8 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"

#Asignar grupo

asignacion <- cbind(df,cluste = segmentos$cluster)
asignacion
##   x  y cluste
## 1 2 10      1
## 2 2  5      2
## 3 8  4      3
## 4 5  8      1
## 5 7  5      3
## 6 6  4      3
## 7 1  2      2
## 8 4  9      1

#Graficar cluster

fviz_cluster(segmentos, data=df)

#Optimizar

set.seed(123)
optimizacion <- clusGap(df,FUN=kmeans, nstart=1,K.max=7)
plot(optimizacion, xlab= "Número de clusters k")

#Conclusion El clustering es un método que sirve para segmentar conjuntos de datos en base a una característica.

LS0tCnRpdGxlOiAiQ2x1c3RlcnMiCmF1dGhvcjogIkFndXN0w61uIEfDs21leiBQZXJleiBBMDE3MzI4OTciCmRhdGU6ICIyMDI0LTA4LTEyIgpvdXRwdXQ6IAogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQogICAgdGhlbWU6IGNvc21vCi0tLQoKIVtdKGh0dHBzOi8vZGFzaGVlODcuZ2l0aHViLmlvL2ltYWdlcy9rbWVhbnMuZ2lmKQoKI0luc3RhbGFyIHBhcXVldGVzCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CgpsaWJyYXJ5KCJjbHVzdGVyIikKbGlicmFyeSgiZ2dwbG90MiIpCmxpYnJhcnkoImRhdGEudGFibGUiKQpsaWJyYXJ5KCJmYWN0b2V4dHJhIikKCmBgYAoKI09idGVuZXIgbG9zIGRhdG9zCmBgYHtyfQpkZiA8LSBkYXRhLmZyYW1lKHg9YygyLDIsOCw1LDcsNiwxLDQpLHk9YygxMCw1LDQsOCw1LDQsMiw5KSkKYGBgCgojQ2FudGlkYWQgZGUgZ3J1cG9zCmBgYHtyfQpncnVwb3MgPC0gMwpgYGAKCiNHZW5lcmFyIHNlZ21lbnRvcwpgYGB7cn0Kc2VnbWVudG9zIDwtIGttZWFucyhkZixncnVwb3MpCnNlZ21lbnRvcwpgYGAKCiNBc2lnbmFyIGdydXBvCmBgYHtyfQphc2lnbmFjaW9uIDwtIGNiaW5kKGRmLGNsdXN0ZSA9IHNlZ21lbnRvcyRjbHVzdGVyKQphc2lnbmFjaW9uCmBgYAoKI0dyYWZpY2FyIGNsdXN0ZXIKYGBge3J9CmZ2aXpfY2x1c3RlcihzZWdtZW50b3MsIGRhdGE9ZGYpCmBgYAoKI09wdGltaXphcgpgYGB7cn0Kc2V0LnNlZWQoMTIzKQpvcHRpbWl6YWNpb24gPC0gY2x1c0dhcChkZixGVU49a21lYW5zLCBuc3RhcnQ9MSxLLm1heD03KQpwbG90KG9wdGltaXphY2lvbiwgeGxhYj0gIk7Dum1lcm8gZGUgY2x1c3RlcnMgayIpCmBgYAoKCiNDb25jbHVzaW9uCkVsIGNsdXN0ZXJpbmcgZXMgdW4gbcOpdG9kbyBxdWUgc2lydmUgcGFyYSBzZWdtZW50YXIgY29uanVudG9zIGRlIGRhdG9zIGVuIGJhc2UgYSB1bmEgY2FyYWN0ZXLDrXN0aWNhLgoK