Aprendizaje no supervisado

Aprendizaje no supervisado en Python

Benjamin Wilson

Director of Research at lateral.io

Aprendizaje no supervisado

  • El aprendizaje no supervisado encuentra patrones en los datos
  • P. ej., agrupar clientes por compras (clustering)
  • Comprimir datos usando patrones de compra (reducción de dimensión)
Aprendizaje no supervisado en Python

Supervisado vs. no supervisado

  • El aprendizaje supervisado halla patrones para predecir
  • P. ej., clasificar tumores como benignos o malignos (etiquetas)
  • El no supervisado halla patrones en los datos
  • ... pero sin una tarea de predicción concreta
Aprendizaje no supervisado en Python

Dataset de Iris

  • Medidas de muchas plantas de iris
  • Tres especies de iris:
    • setosa
    • versicolor
    • virginica
  • Largo y ancho de pétalo, largo y ancho de sépalo (las características del dataset)

Iris

1 https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html
Aprendizaje no supervisado en Python

Arrays, características y muestras

  • Array NumPy 2D
  • Columnas: medidas (las características)
  • Filas: plantas de iris (las muestras)
Aprendizaje no supervisado en Python

Los datos de Iris tienen 4 dimensiones

  • Las muestras de Iris son puntos en un espacio de 4 dimensiones
  • Dimensión = número de características
  • ¡Demasiadas dimensiones para visualizar!
  • ... pero el no supervisado da información
Aprendizaje no supervisado en Python

Clustering k-means

  • Encuentra clusters de muestras
  • Hay que indicar el número de clusters
  • Implementado en sklearn ("scikit-learn")
Aprendizaje no supervisado en Python
print(samples)
[[ 5.   3.3  1.4  0.2]
 [ 5.   3.5  1.3  0.3]
 ...
 [ 7.2  3.2  6.   1.8]]
from sklearn.cluster import KMeans

model = KMeans(n_clusters=3)
model.fit(samples)
KMeans(n_clusters=3)
labels = model.predict(samples)

print(labels)
[0 0 1 1 0 1 2 1 0 1 ...]
Aprendizaje no supervisado en Python

Etiquetas de cluster para nuevas muestras

  • Nuevas muestras pueden asignarse a clusters existentes
  • k-means recuerda la media de cada cluster (los "centroides")
  • Busca el centroide más cercano a cada nueva muestra
Aprendizaje no supervisado en Python

Etiquetas de cluster para nuevas muestras

print(new_samples)
[[ 5.7  4.4  1.5  0.4]
 [ 6.5  3.   5.5  1.8]
 [ 5.8  2.7  5.1  1.9]]
new_labels = model.predict(new_samples)

print(new_labels)
[0 2 1]
Aprendizaje no supervisado en Python

Diagramas de dispersión

  • Diagrama de dispersión: largo del sépalo vs. largo del pétalo
  • Cada punto representa una muestra de iris
  • Colorea los puntos por etiquetas de cluster
  • PyPlot (matplotlib.pyplot)

Diagrama de dispersión

Aprendizaje no supervisado en Python

Diagramas de dispersión

import matplotlib.pyplot as plt

xs = samples[:,0] ys = samples[:,2]
plt.scatter(xs, ys, c=labels)
plt.show()
Aprendizaje no supervisado en Python

¡Vamos a practicar!

Aprendizaje no supervisado en Python

Preparing Video For Download...