La base de datos de USArrests contiene estadisticas de arrestos por cada 100,000 residentes por agresion, asesinato y violacion en cada uno de los 50 estados de EE.UU EN 1973.
#install.packages("cluster") # Para agrupamientos
library(cluster)
#install.packages("ggplot2") # Para graficar
library(ggplot2)
#install.packages("factoextra") # Visualizar Clusters
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
#install.packages("data.table") # Conjunto de datos grandes
library(data.table)
#install.packages("tidyverse")
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ lubridate 1.9.4 ✔ tibble 3.2.1
## ✔ purrr 1.0.4 ✔ tidyr 1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::between() masks data.table::between()
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::first() masks data.table::first()
## ✖ lubridate::hour() masks data.table::hour()
## ✖ lubridate::isoweek() masks data.table::isoweek()
## ✖ dplyr::lag() masks stats::lag()
## ✖ dplyr::last() masks data.table::last()
## ✖ lubridate::mday() masks data.table::mday()
## ✖ lubridate::minute() masks data.table::minute()
## ✖ lubridate::month() masks data.table::month()
## ✖ lubridate::quarter() masks data.table::quarter()
## ✖ lubridate::second() masks data.table::second()
## ✖ purrr::transpose() masks data.table::transpose()
## ✖ lubridate::wday() masks data.table::wday()
## ✖ lubridate::week() masks data.table::week()
## ✖ lubridate::yday() masks data.table::yday()
## ✖ lubridate::year() masks data.table::year()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# install.packages("ggplot2")# Graficos con mejor diseño
library(ggplot2)
# install.packages("lattice")# Crear graficos
library(lattice)
# install.packages("DataExplorer")# Analisis Descriptivo
library(DataExplorer)
#install.packages("kernlab")
library(kernlab)
##
## Adjuntando el paquete: 'kernlab'
##
## The following object is masked from 'package:purrr':
##
## cross
##
## The following object is masked from 'package:ggplot2':
##
## alpha
#install.packages("rpart")
library(rpart)
#install.packages("randomForest")
library(randomForest)
## randomForest 4.7-1.2
## Type rfNews() to see new features/changes/bug fixes.
##
## Adjuntando el paquete: 'randomForest'
##
## The following object is masked from 'package:dplyr':
##
## combine
##
## The following object is masked from 'package:ggplot2':
##
## margin
# install.packages("caret")# Algoritmos de aprendizaje automatico
library(caret)
##
## Adjuntando el paquete: 'caret'
##
## The following object is masked from 'package:purrr':
##
## lift
df <- USArrests
datos_escalados <- scale(df)
grupos <- 4
segmentos <- kmeans(datos_escalados, grupos)
asignacion <- cbind(df, cluster=
segmentos$cluster)
fviz_cluster(segmentos, data=df)
set.seed(123)
optimizacion <- clusGap(datos_escalados, FUN=kmeans, nstart=1,K.max = 10)
plot(optimizacion, xlab="Número de clusters k")
promedio <- aggregate(asignacion, by=list(asignacion$cluster),FUN = mean)
promedio
## Group.1 Murder Assault UrbanPop Rape cluster
## 1 1 5.65625 138.87500 73.87500 18.78125 1
## 2 2 10.81538 257.38462 76.00000 33.19231 2
## 3 3 3.60000 78.53846 52.07692 12.17692 3
## 4 4 13.93750 243.62500 53.75000 21.41250 4
table(asignacion$cluster)
##
## 1 2 3 4
## 16 13 13 8
nombres_clusters <- c("Estados Seguros", "Estados con alto crimen", "Estados peligrosos", "Estados con bajo crimen")
asignacion <- asignacion %>%
mutate(Nombre_de_clusters = case_when(
cluster == 1 ~ nombres_clusters[1],
cluster == 2 ~ nombres_clusters[2],
cluster == 3 ~ nombres_clusters[3],
cluster == 4 ~ nombres_clusters[4]
))
asignacion <- asignacion %>% select(-cluster)
print(asignacion)
## Murder Assault UrbanPop Rape Nombre_de_clusters
## Alabama 13.2 236 58 21.2 Estados con bajo crimen
## Alaska 10.0 263 48 44.5 Estados con alto crimen
## Arizona 8.1 294 80 31.0 Estados con alto crimen
## Arkansas 8.8 190 50 19.5 Estados con bajo crimen
## California 9.0 276 91 40.6 Estados con alto crimen
## Colorado 7.9 204 78 38.7 Estados con alto crimen
## Connecticut 3.3 110 77 11.1 Estados Seguros
## Delaware 5.9 238 72 15.8 Estados Seguros
## Florida 15.4 335 80 31.9 Estados con alto crimen
## Georgia 17.4 211 60 25.8 Estados con bajo crimen
## Hawaii 5.3 46 83 20.2 Estados Seguros
## Idaho 2.6 120 54 14.2 Estados peligrosos
## Illinois 10.4 249 83 24.0 Estados con alto crimen
## Indiana 7.2 113 65 21.0 Estados Seguros
## Iowa 2.2 56 57 11.3 Estados peligrosos
## Kansas 6.0 115 66 18.0 Estados Seguros
## Kentucky 9.7 109 52 16.3 Estados peligrosos
## Louisiana 15.4 249 66 22.2 Estados con bajo crimen
## Maine 2.1 83 51 7.8 Estados peligrosos
## Maryland 11.3 300 67 27.8 Estados con alto crimen
## Massachusetts 4.4 149 85 16.3 Estados Seguros
## Michigan 12.1 255 74 35.1 Estados con alto crimen
## Minnesota 2.7 72 66 14.9 Estados peligrosos
## Mississippi 16.1 259 44 17.1 Estados con bajo crimen
## Missouri 9.0 178 70 28.2 Estados con alto crimen
## Montana 6.0 109 53 16.4 Estados peligrosos
## Nebraska 4.3 102 62 16.5 Estados peligrosos
## Nevada 12.2 252 81 46.0 Estados con alto crimen
## New Hampshire 2.1 57 56 9.5 Estados peligrosos
## New Jersey 7.4 159 89 18.8 Estados Seguros
## New Mexico 11.4 285 70 32.1 Estados con alto crimen
## New York 11.1 254 86 26.1 Estados con alto crimen
## North Carolina 13.0 337 45 16.1 Estados con bajo crimen
## North Dakota 0.8 45 44 7.3 Estados peligrosos
## Ohio 7.3 120 75 21.4 Estados Seguros
## Oklahoma 6.6 151 68 20.0 Estados Seguros
## Oregon 4.9 159 67 29.3 Estados Seguros
## Pennsylvania 6.3 106 72 14.9 Estados Seguros
## Rhode Island 3.4 174 87 8.3 Estados Seguros
## South Carolina 14.4 279 48 22.5 Estados con bajo crimen
## South Dakota 3.8 86 45 12.8 Estados peligrosos
## Tennessee 13.2 188 59 26.9 Estados con bajo crimen
## Texas 12.7 201 80 25.5 Estados con alto crimen
## Utah 3.2 120 80 22.9 Estados Seguros
## Vermont 2.2 48 32 11.2 Estados peligrosos
## Virginia 8.5 156 63 20.7 Estados Seguros
## Washington 4.0 145 73 26.2 Estados Seguros
## West Virginia 5.7 81 39 9.3 Estados peligrosos
## Wisconsin 2.6 53 66 10.8 Estados peligrosos
## Wyoming 6.8 161 60 15.6 Estados Seguros
set.seed(123)
renglones_entrenamiento <- createDataPartition(asignacion$Nombre_de_clusters, p=0.8, list=FALSE)
entrenamiento <- asignacion[renglones_entrenamiento, ]
prueba <- asignacion[-renglones_entrenamiento, ]
entrenamiento$Nombre_de_clusters <- as.factor(entrenamiento$Nombre_de_clusters)
prueba$Nombre_de_clusters <- as.factor(prueba$Nombre_de_clusters)
modelo <- train(Nombre_de_clusters ~ ., data = entrenamiento,
method = "nnet", # Cambiar
preProcess=c("scale","center"),
trControl = trainControl(method="cv", number = 10),
trace = FALSE #Cambiar hiperparametros
)
resultado_Entrenamiento <- predict(modelo,entrenamiento)
resultado_prueba <- predict(modelo, prueba)
# Matriz de Confusión del Resultado del Entrenamiento
mcre <- confusionMatrix(resultado_Entrenamiento, entrenamiento$Nombre_de_clusters)
mcre
## Confusion Matrix and Statistics
##
## Reference
## Prediction Estados con alto crimen Estados con bajo crimen
## Estados con alto crimen 11 0
## Estados con bajo crimen 0 7
## Estados peligrosos 0 0
## Estados Seguros 0 0
## Reference
## Prediction Estados peligrosos Estados Seguros
## Estados con alto crimen 0 0
## Estados con bajo crimen 0 0
## Estados peligrosos 11 0
## Estados Seguros 0 13
##
## Overall Statistics
##
## Accuracy : 1
## 95% CI : (0.9159, 1)
## No Information Rate : 0.3095
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 1
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: Estados con alto crimen
## Sensitivity 1.0000
## Specificity 1.0000
## Pos Pred Value 1.0000
## Neg Pred Value 1.0000
## Prevalence 0.2619
## Detection Rate 0.2619
## Detection Prevalence 0.2619
## Balanced Accuracy 1.0000
## Class: Estados con bajo crimen Class: Estados peligrosos
## Sensitivity 1.0000 1.0000
## Specificity 1.0000 1.0000
## Pos Pred Value 1.0000 1.0000
## Neg Pred Value 1.0000 1.0000
## Prevalence 0.1667 0.2619
## Detection Rate 0.1667 0.2619
## Detection Prevalence 0.1667 0.2619
## Balanced Accuracy 1.0000 1.0000
## Class: Estados Seguros
## Sensitivity 1.0000
## Specificity 1.0000
## Pos Pred Value 1.0000
## Neg Pred Value 1.0000
## Prevalence 0.3095
## Detection Rate 0.3095
## Detection Prevalence 0.3095
## Balanced Accuracy 1.0000
mcrp <- confusionMatrix(resultado_prueba, prueba$Nombre_de_clusters)
mcrp
## Confusion Matrix and Statistics
##
## Reference
## Prediction Estados con alto crimen Estados con bajo crimen
## Estados con alto crimen 2 0
## Estados con bajo crimen 0 0
## Estados peligrosos 0 0
## Estados Seguros 0 1
## Reference
## Prediction Estados peligrosos Estados Seguros
## Estados con alto crimen 0 0
## Estados con bajo crimen 0 0
## Estados peligrosos 2 0
## Estados Seguros 0 3
##
## Overall Statistics
##
## Accuracy : 0.875
## 95% CI : (0.4735, 0.9968)
## No Information Rate : 0.375
## P-Value [Acc > NIR] : 0.005605
##
## Kappa : 0.8182
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: Estados con alto crimen
## Sensitivity 1.00
## Specificity 1.00
## Pos Pred Value 1.00
## Neg Pred Value 1.00
## Prevalence 0.25
## Detection Rate 0.25
## Detection Prevalence 0.25
## Balanced Accuracy 1.00
## Class: Estados con bajo crimen Class: Estados peligrosos
## Sensitivity 0.000 1.00
## Specificity 1.000 1.00
## Pos Pred Value NaN 1.00
## Neg Pred Value 0.875 1.00
## Prevalence 0.125 0.25
## Detection Rate 0.000 0.25
## Detection Prevalence 0.000 0.25
## Balanced Accuracy 0.500 1.00
## Class: Estados Seguros
## Sensitivity 1.000
## Specificity 0.800
## Pos Pred Value 0.750
## Neg Pred Value 1.000
## Prevalence 0.375
## Detection Rate 0.375
## Detection Prevalence 0.500
## Balanced Accuracy 0.900