Ejercicio de clúster por densidad con dataset Iris

Contenido del Bootcamp Dirigido por: | Última modificación: 16 de abril de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En este artículo te mostraremos, por medio de un ejercicio de clúster por densidad, cómo funciona este elemento.

Para ello, utilizaremos el dataset Iris, una de las bases de datos más conocida que se utiliza para determinar factores como el número mínimo de clústeres, el punto central basado en densidad o la distancia máxima entre clústeres.

Este dataset fue introducido por Ronald Fisher en su artículo The use of multiple measurements in taxonomic problems (El uso de medidas múltiples en problemas taxonómicos) en el año 1936.

El conjunto de datos contiene 3 clases (iris setosa, iris virginica e iris versicolor) de 50 instancias cada una, donde cada clase se refiere a un tipo de planta de iris. Una clase es linealmente separable de las otras dos; estos últimos no son linealmente separables entre sí.

Se miden cuatro características en centímetros: el largo del sépalo, el largo del pétalo, el ancho del sépalo y el ancho del pétalo.

Ejercicio de clúster por densidad: dataset Iris

#ejercicio de clúster por densidad
data (iris)

preproc <- caret :: preProcess (iris [ ,1 : 4], method = c ("center", "scale"))
iris_norm <- predict (preproc, iris [ , 1 : 4])
summary (iris_norm)
Ejercicio de cluster por densidad

Vamos a trabajar con un número de muestras pequeño, tan solo cuatro. En ejercicios anteriores hemos trabajado hasta con 30 muestras, lo cual se convierte en un inconveniente a la hora de tratar de analizar los datos y hacer el proceso de clustering. No obstante, como en este caso son solo 4 muestras para calcular el kNN (k-nearest neighborhoods, los k-vecinos más cercanos), especulamos que el proceso será un poco más sencillo de ejecutar.

Buscamos el valor de eps mirando la distancia de cada muestra a sus 4 vecinos más próximos:

#ejercicio de clúster por densidad
KNNdistplot (iris_norm, k = 4)
grid ()

Vemos que el cálculo se da alrededor del 0.6, es decir, el valor en el que se empiezan a dispersar los datos y empiezan a encontrarse distancias más grandes es 0.6.

Si pintamos cómo quedan los clústeres que nos ha definido el algoritmo, podemos notar que nos ha definido dos clústeres marcados con los colores rojo y verde.

El algoritmo nos ha pintado los distintos portales que podemos tener, cada uno de los modelos de los diferentes grupos.

Observamos también que los clústeres sí se separan bastante entre sí.

#ejercicio de clúster por densidad
cl <- dbscan (iris_norm, eps = 0.6, minPts = 4)
pairs (iris_norm, col = cl$cluster + 1L)

Si intentamos ver los resultados por especies, diferenciamos correctamente la setosa (que tiene 49 puntos); sin embargo, la versicolor y la virgínica están un poco más dispersas.

#ejercicio de clúster por densidad
df = data.frame (dist = kNNdist (iris_norm, k = 4), cl = as.factor (cl$cluster), sp = iris$Species)
table (dfscl, dfssp)
setosaversicolorvirginica
01611
14900
204439

Ahora, pintaremos las distancias del k – nearest neighborhood o kNN entre cada uno de los grupos:

#ejercicio de clúster por densidad
head (df)
distclsp
<dbl><fct><fct>
10.23631811setosa
20.23631811setosa
30.31000271setosa
40.28294321setosa
50.29057281setosa
60.46253501setosa

Ahora, pintaremos cada una de estas distancias, pero con relación a las distancias medias de cada uno de los grupos:

#ejercicio de clúster por densidad
library (dplyr)
df %>% group_by (cl) %>% summarize (mean (dist))
clmean (dist)
<fct><dbl>
00.9844577
10.4015259
20.4932574

Si nos fijamos bien, en el grupo 0, en el que está el ruido, es donde hay más distancia media entre elementos. El kNN es más grande, es decir, la distancia media hasta encontrar 4 elementos es más grande cuando se trata de los puntos de ruido, lo cual, por supuesto, es lógico.

La distancia media entre los grupos 1 y 2 es más compacta. Esto significa que lo que tiene que crecer esa esfera hasta encontrar 4 vecinos es menos (alrededor de 0.5 puntos por debajo del nivel de ruido).

¿Qué aprendiste hoy?

Has aprendido a trabajar con uno de los datasets más famosos en el mundo del data mining. ¿Te gustaría seguir aprendiendo sobre Big Data? En Keepcoding tenemos para ti las mejores opciones, en este caso se trata de nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, con el que podrás instruirte acerca de todas las temáticas relacionadas con el mundo del Big Data, la inteligencia artificial y el machine learning, rama a la que pertenece la minería de datos. ¡Anímate y solicita más información!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado