Metodos No Jerarquicos PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

METODOS NO JERARQUICOS

ALGORITMO K-MEANS

Preparamos el set de datos

Lo primero que se hace es escalar o normalizar los datos,para que ninguna variable tenga mas peso que otras

library(readxl)
datos <- read_excel("datos.xlsx")

insurance.scale <- as.data.frame(scale(datos[,5:9])) # escalar los datos

Creamos los clusters

1. Se debe fijar la semilla, ya que permite reproducir este mismo ejercicio, obteniendo siempre el mismo
resultado;si no se realiza este proceso, nos daria un resultado diferente ya que k-means tiene un componente
aleatorio, que al iniciarlo selecciona aleatoriamente las primeras observaciones, una para cada una de los clusters
que se hayan elegido

2. Luego se aplica k-means al juego de datos una vez escalados y le indicamos que queremos 4 clusters

se puede acceder a informacion como la asignacion de las observaciones a los clusters o a las distintas inercias

set.seed(80) # fijar semilla

insurance.km <- kmeans(insurance.scale, centers = 4) # Realizamos clustering

names(insurance.km) # contenido del objeto

## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"


## [6] "betweenss" "size" "iter" "ifault"

head(insurance.km$cluster) # asignación observaciones a clusters

## [1] 1 1 2 2 1 2

insurance.km$totss # inercia total

## [1] 90035

insurance.km$betweenss # inercia ínter grupos

## [1] 37343.34

insurance.km$withinss # inercia intra grupos


## [1] 13923.212 18128.295 11557.281 9082.873

insurance.km$tot.withinss # inercia intra grupos (total)

## [1] 52691.66

Determinar un número de clusters óptimo

No se puede determinar a primera medida un numero de clusters optimo, ya que depende de lo que se este
buscando, pero si hay una medida en la que nos podemos apoyar, la INERCIA INTERGRUPOS, para ello se
puede hacer una exploracion de los distintyos valores de esta inercia probando con un cluster, con dos, con tres y
asi sucesivamente hasta el numero que consideremos

sumbt<-kmeans(insurance.scale, centers = 1)$betweenss


for(i in 2:10) sumbt[i] <- kmeans(insurance.scale, centers = i)$betweenss
plot(1:10, sumbt, type = "b", xlab = "número de clusters", ylab = "suma de cuadrados ínter grupo
s")

Inspeccionando los resultados

Se va a presentar graficamente las dos variables iniciales antes de escalar como son la antiguedad en la
compañia y la antiguedad del permiso de conducir y le vamos a decir que pinte las observaciones en funcion del
cluster al que han sido asignadas Se introduce una etiqueta para las X “fidelidad de la persona a la compañia”
y una etiqueta para las Y “experiencia” de esta persona como conductor
plot(datos$ant_comp,datos$ant_perm, col=insurance.km$cluster ,xlab = "Fidelidad a la compañía",
ylab = "Experiencia" )

aggregate(datos[,5:9] ,by = list(insurance.km$cluster), mean)

## Group.1 siniestros ant_comp ant_perm edad ant_veh


## 1 1 0.07860090 5.107880 6.929652 26.18137 6.378267
## 2 2 0.12324723 3.351476 21.577491 49.34668 3.238561
## 3 3 0.05050768 13.761260 24.135381 47.18068 8.844832
## 4 4 0.03608529 4.038546 21.062603 47.30508 13.349645

Analisis

Cluster 2: Tienen el indice de siniestralidad mas alto corresponde a personas con una media de 49 años Tienen
la antiguedad del vehiculo en 3.2 años usan los vehiculos mas nuevos con las personas mayores de la muestra
de datos

También podría gustarte