Organizar BD

Paso. 1 Cargar base de datos

bd <- read.csv("/Users/ivannagarza/Downloads/USArrests.csv")

Paso 2. Agregar X como nombre de los renglones

bd1<- bd  
rownames(bd1) <- bd1$X

Paso 3. Eliminar la columna X

bd2<-bd1
bd2 <- subset (bd2, select = -c (X))

Paso 4. Revisar presencia de datos anormales

summary(bd2)
##      Murder          Assault         UrbanPop          Rape      
##  Min.   : 0.800   Min.   : 45.0   Min.   :32.00   Min.   : 7.30  
##  1st Qu.: 4.075   1st Qu.:109.0   1st Qu.:54.50   1st Qu.:15.07  
##  Median : 7.250   Median :159.0   Median :66.00   Median :20.10  
##  Mean   : 7.788   Mean   :170.8   Mean   :65.54   Mean   :21.23  
##  3rd Qu.:11.250   3rd Qu.:249.0   3rd Qu.:77.75   3rd Qu.:26.18  
##  Max.   :17.400   Max.   :337.0   Max.   :91.00   Max.   :46.00
boxplot(USArrests)

Creación de clusters

Paso 1.

Normalizar variables

bd3<-bd2
bd3 <- as.data.frame(scale(bd3))

Paso 2.

k-means clustering

segmentos <- kmeans(bd3, 4)
segmentos
## K-means clustering with 4 clusters of sizes 16, 13, 13, 8
## 
## Cluster means:
##       Murder    Assault   UrbanPop        Rape
## 1 -0.4894375 -0.3826001  0.5758298 -0.26165379
## 2  0.6950701  1.0394414  0.7226370  1.27693964
## 3 -0.9615407 -1.1066010 -0.9301069 -0.96676331
## 4  1.4118898  0.8743346 -0.8145211  0.01927104
## 
## Clustering vector:
##        Alabama         Alaska        Arizona       Arkansas     California 
##              4              2              2              4              2 
##       Colorado    Connecticut       Delaware        Florida        Georgia 
##              2              1              1              2              4 
##         Hawaii          Idaho       Illinois        Indiana           Iowa 
##              1              3              2              1              3 
##         Kansas       Kentucky      Louisiana          Maine       Maryland 
##              1              3              4              3              2 
##  Massachusetts       Michigan      Minnesota    Mississippi       Missouri 
##              1              2              3              4              2 
##        Montana       Nebraska         Nevada  New Hampshire     New Jersey 
##              3              3              2              3              1 
##     New Mexico       New York North Carolina   North Dakota           Ohio 
##              2              2              4              3              1 
##       Oklahoma         Oregon   Pennsylvania   Rhode Island South Carolina 
##              1              1              1              1              4 
##   South Dakota      Tennessee          Texas           Utah        Vermont 
##              3              4              2              1              3 
##       Virginia     Washington  West Virginia      Wisconsin        Wyoming 
##              1              1              3              3              1 
## 
## Within cluster sum of squares by cluster:
## [1] 16.212213 19.922437 11.952463  8.316061
##  (between_SS / total_SS =  71.2 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"
asignacion <- cbind(USArrests, cluster = segmentos$cluster)
head(asignacion,10)
##             Murder Assault UrbanPop Rape cluster
## Alabama       13.2     236       58 21.2       4
## Alaska        10.0     263       48 44.5       2
## Arizona        8.1     294       80 31.0       2
## Arkansas       8.8     190       50 19.5       4
## California     9.0     276       91 40.6       2
## Colorado       7.9     204       78 38.7       2
## Connecticut    3.3     110       77 11.1       1
## Delaware       5.9     238       72 15.8       1
## Florida       15.4     335       80 31.9       2
## Georgia       17.4     211       60 25.8       4

Visualización

Exportar csv

write.csv(asignacion,"USArrestsClusters")

Visualizar Segmentos

# install.packages("factoextra")
library(factoextra)
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
fviz_cluster(segmentos, data = bd3,
             palette=c("red", "blue", "black", "darkgreen"),
             ellipse.type = "euclid",
             star.plot = T,
             repel = T,
             ggtheme = theme())

Optimizar k

Se debe de insertar una libreria para cluster y para data.table, asimismo un paquete de data.table, sin embargo no se incluyo en el apartado R debido a que marcaba error para publicar.

El código que se puede observar a continuación, se visualiza como texto debido a que al momento de correr la funcion clusGap viene que no esta disponible para la versión de R que tengo. Sin embargo, a continuación se inserta la tabla que da de resultado el código siguiente;

set.seed(123) optimizacion <- clusGap(bd3, FUN = kmeans, nstart = 25, K.max = 10, B = 50) plot(optimizacion, xlab = “Numero de clusters k”) .

Conclusiones

Realizar esta programación con R fue con el propósito de visualmente identificar los datos segmentados. Para poder realizar este programa de manera efectiva, hubieron muchos Warnings en el proceso, debido a la falta de la instalación de diversos paquetes y librerias tales como data.table, y factoextra. Una vez que se instalaron, se pudo representar visualmente los segmentos identificados en el paso 2 de la creación de los clusters, “k-means clustering”.

Hubo un detalle al momento de visualizar el plot de los segmentos, debido a que a comparación de la programación del profesor y mis compañeros, mi visualización se diferenciaba en el color de los circulos, sin embargo, no fue de mucha importancia debido a que la información que estos contenían era igual.

R Studio es una aplicación de programación que en lo personal disfruto mucho debido a la sencillez de identificar los errores, como en mi caso fue la falta de instalación de los paquetes anteriormente mencionados.