# 0. Instalar y cargar los paquetes
# Lista de paquetes de funciones a instalar
.packages = c("factoextra","corrplot","PerformanceAnalytics","Hmisc")

# Instala los paquetes sinó los tienes instalados
.inst <- .packages %in% installed.packages()
if(length(.packages[!.inst]) > 0) install.packages(.packages[!.inst])

# CARGAR PAQUETES O CREAR FUNCIONES
#*******************************************************************************
# Carga los paquetes sinó los tienes cargados
lapply(.packages, require, character.only=TRUE)
#-------------------------------------------------------------------------------


# 1. leer datos y estandarizar
my_data <- scale(iris[, -5])

# 2. Explorar los datos
pairs(my_data) # matrixplot
cor <- rcorr(my_data)
corrplot(cor$r, type="upper", order="hclust", 
         p.mat = cor$P, sig.level = 0.01, insig = "blank") # plot de correlación
chart.Correlation(my_data, histogram=TRUE, pch=19,method = "spearman") # histograma, matrixplot y correlación

# 3. Escojer el número óptimo de clusters
fviz_nbclust(my_data, kmeans, method = "gap_stat")

# 4. Clustering k-means con el paquete factoextra: calcula las distancias
km.res <- eclust(my_data, "kmeans", k = 3,
                 nstart = 25, graph = FALSE)

# 5. Veracidad del cluster
fviz_silhouette(km.res)

# 6. Visualizar los clusters
pairs(my_data,col=km.res$cluster,pch = 21)

