DBSCAN
Parte de la sección Aprendizaje no supervisado del Journey de Machine Learning de Coddy. Lección 20 de 51.
Este capítulo encuentra grupos de cualquier forma y los puntos que no pertenecen a ninguno. Al final, cartografiarás las luces de un valle:
Primero, los bancos de arena de las focas que hicieron fallar k-means en Cuando falla K-Means. DBSCAN sigue a los grupos en su lugar:
Un punto con min_samples puntos (incluido él mismo) dentro de eps, el radio del círculo, está en una multitud. Las multitudes se extienden a través de esos puntos. No hay que elegir k:
from sklearn.cluster import DBSCAN
labels = DBSCAN(eps=0.2, min_samples=5).fit_predict(X)
print(labels.max() + 1)Esto imprime 2: las multitudes se numeran desde 0, así que el número más grande más uno las cuenta.
Desafío
IntermedioEn un lago helado, los patinadores recorren una pista que serpentea entre dos islas, y una multitud observa un partido de hockey. k-means dividiría la pista en partes. El programa lee eps en metros.
- Ajusta DBSCAN con ese eps y
min_samples=5; guarda las multitudes enlabels. - Imprime cuántas multitudes encontró.
- Dibújalas con
draw_crowds(ax, X, labels)y muestra el gráfico.
Para otro lago y eps 3.5:
Crowds found: 3Coddy describe tu gráfico. Después ejecútalo con eps 8: ¿adónde fueron las multitudes?
Pruébalo tú mismo
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
# Posiciones de 170 patinadores sobre el lago helado, en metros
skaters = pd.read_csv("skaters.csv")
X = np.column_stack([skaters["x_m"], skaters["y_m"]])
eps = float(input())
# Dibuja cada grupo con un color propio y una etiqueta que indica su tamaño
def draw_crowds(ax, X, labels):
for crowd in range(labels.max() + 1):
rows = labels == crowd
ax.scatter(X[rows, 0], X[rows, 1], s=14, label=f"{rows.sum()} skaters")
ax.legend()
fig, ax = plt.subplots()
ax.set_title("Skaters on the Lake")
ax.set_xlabel("East (m)")
ax.set_ylabel("North (m)")
# Escribe tu código a continuación
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Aprendizaje no supervisado
1Encontrar grupos
Aprender sin etiquetasMedir la similitudK-Means a manoK-Means en scikit-learnRepaso: miembros del gimnasio7PCA en la práctica
Visualizar 64 dimensionesComponentes como patronesComprimir y reconstruirPCA antes de un modeloRepaso: escáner facial10Proyecto: Explorador de dígitos
Observa los dígitosReduce con PCAAgrupa los dígitosPon nombre a los gruposEncuentra los diferentes2Elegir k
InerciaEl método del codoPuntuaciones de siluetaEscalar antes de agruparRepaso: zonas de entrega3Interpretación de los clústeres
Perfilado de clústeresCentros en unidades realesClústeres frente a etiquetas conocidasCuándo falla K-MeansRepaso: cata de téPractica por tu cuenta: Compilador de Python online