Aplicar PCA a dataset Iris

Autor: | Última modificación: 14 de noviembre de 2022 | Tiempo de Lectura: 3 minutos
Temas en este post:

En este articulo vamos a aplicar PCA a dataset Iris, un conjunto de datos con el que ya hemos trabajado en varias ocasiones y que es famoso porque muchos analistas lo usan en Big Data y sus derivados.

Aplicar PCA a dataset Iris

A continuación, te mostramos este proceso a través de un ejercicio práctico:

#aplicar PCA a dataset iris
iris_data <- iris [ , 1 : 4]

for (i in 1 : ncol (iris_data)) {
mn <- mean (iris_data [ , 1 ], na.rm = T)
sd <- sd (iris_data [ , i ], na.rm = T)

iris_data [ , 1] <- (iris_data [ , i] - mn) / sd
}
#Utilizamos prcomp para calcular el pca
priris <- prcomp (iris_data, center = FALSE, scale = FALSE)
#Comprobamos que los dos primeros autovalores contienen aproximadamente el 90% de la varianza
plot (priris$sdev ^ 2 / sum (priris$sdev ^ 2), main = "Autovalores")
aplicar PCA a dataset iris

Observamos que apenas con dos elementos ya casi tenemos el 90% de la varianza: el primer elemento posee un 60 – 7 % (0.6+) y el segundo un 20% (0.2+).

Aquí lo que podemos hacer es aplicar PCA a dataset Iris.

Hacemos un k-means con tres clústeres:

#aplicar PCA a dataset iris
number_of_clusters <- 3
number_of_pca <- 2
my_clust <- kmeans (priris$x [ , c (1 : number_of_pca)], number_of_clusters)
plot (priris$x [ , c (1, 2)], col = my_clust$cluster)
text (x = my_clust$centers [ , 1],
y = my_clust$centers [ , 2],
cex =1, pos = 4, labels = (1 : nrow (my_clust$centers)), col = "blue")
table (iris$Species, my_clust$cluster)
123
setosa0050
versicolor11390
virginica36140

El resultado es lo que se muestra a continuación:

Aplicar PCA a dataset Iris 1

Hemos cogido las 4 dimensiones que teníamos de sépalos y pétalos (el alto y el ancho de ambas) y lo hemos dividido en 2. Nos han salido dos grupos. El grupo 1 corresponde a los datos pintados en color rojo y al grupo 2 pertenecen los datos color negro y verde.

El algoritmo ha hecho un intento por diferenciar este último grupo y dividirlo en dos, pero ha sido un intento fallido.

En lugar de hacer un clúster, a lo mejor podríamos pintar las distintas especies por color. Si usamos la librería dbscan, solo encontrará dos grupos:

#aplicar PCA a dataset iris
library (dbscan)
number_of_pca <- 2
#my_clust <- hdbscan (priris$x [ , c (1 : number_of_pca)], minPts = 4)
my_clust <- dbscan (priris$x [ , c (1 : number_of_pca)], minPts = 5, eps = 0.8)
plot (priris$x[ , c (1, 2)], col = my clust$cluster)
table (iris$Species, my_clust$cluster)
012
setosa1490
versicolor0050
virginica3047

Los dos grupos que nos encuentra se muestran a continuación:

Aplicar PCA a dataset Iris 2

Ahora realizaremos la matriz de rotación.

Recordemos que estas matrices solo nos dicen qué tenemos que hacer cuando nos venga una muestra, cómo transformarla al dominio anterior.

Cuando, por ejemplo, nos llegue una nueva flor con una longitud de sépalo, lo multiplicamos por el PC1. Esto lo hacemos con el largo y ancho del sépalo y del pétalo. Lo que nos queda es un valor en la coordenada del PC1.

Lo mismo haríamos con el PC2, con el PC3 y así sucesivamente.

#aplicar PCA a dataset iris
priris$rotation
PC1PC2PC3PC4
Sepal.Length0.5210659-0.377417620.71956640.2612863
Sepal.Width-0.2693474-0.92329566-0.2443818-0.1235096
Petal.Length0.5804131-0.02449161-0.1421264-0.8014492
Petal.Width0.5648565-0.06694199-0.63427270.5235971
#aplicar PCA a dataset iris
head  (priris$x)
head (iris)
PC1PC2PC3PC4
-2.257141-0.47842380.127179620.024087508
-2.0740130.67188270.233825520.102662845
-2.3563350.3407664-0.044053900.028282305
-2.2917070.5953999-0.09098530-0.065735340
-2.381863-0.6446757-0.01568565-0.035802870
-2.068701-1.4842053-0.026878250.006586116
Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies
<dbl><dbl><dbl><dbl><dbl>
15.13.51.40.2setosa
24.93.01.40.2setosa
34.73.21.30.2setosa
44.63.11.50.2setosa
55.03.61.40.2setosa
65.43.91.70.4setosa

¿Te ha gustado este tuto?

Hemos visto cómo aplicar PCA a dataset Iris, un conjunto de datos que es bastante familiar para todos aquellos que hayan estudiado algo relacionado con el Big data, en especial la analítica.

Si quieres seguir formándote, puedes hacerlo de forma íntegra e intensiva por medio de nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, con el que adquirirás todos los conocimientos relacionados con el área en pocos meses, a nivel teórico y práctico y con la guía constante de grandes profesionales en el área.

¿Quieres darle un impulso a tu carrera profesional y triunfar en el mercado laboral IT? ¡Anímate a cambiar tu vida y solicita ahora más información!

👉 Descubre más del Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp ¡Descarga el temario!

👉 Prueba el Bootcamp Gratis por una Semana ¡Empieza ahora mismo!

👉 Conoce nuestros otros Bootcamps en Programación y Tecnología

[email protected]

¿Trabajo? Aprende a programar y consíguelo.

¡No te pierdas la próxima edición del Aprende a Programar desde Cero Full Stack Jr. Bootcamp!

 

Prepárate en 4 meses, aprende las últimas tecnologías y consigue trabajo desde ya. 

 

Solo en España hay más de 120.400 puestos tech sin cubrir, y con un sueldo 11.000€ por encima de la media nacional. ¡Es tu momento!

 

🗓️ Próxima edición: 13 de febrero

 

Reserva tu plaza descubre las becas disponibles.