Ejemplo con DBSCAN

Probemos DBSCAN con el dataset lunas que tantos problemas supuso para k-Means: creamos las características x e y, y las mostramos en un diagrama de dispersión:

from sklearn.datasets import make_moons
X, y = make_moons(n_samples=400, noise=0.05, random_state=0)

x = X[:, 0]
y = X[:, 1]

sns.scatterplot(x, y, legend = False);

Dataset lunas

Ahora importamos el algoritmo:

from sklearn.cluster import DBSCAN

Lo instanciamos indicando una distancia máxima entre puntos de 0.2:

model = DBSCAN(eps = 0.2)

Lo entrenamos y generamos la predicción:

clusters = model.fit_predict(X)

Ahora ya podemos repetir el gráfico mostrando cada cluster de un color diferente:

sns.scatterplot(x, y, hue = clusters);

Clusters identificados en el dataset luna

Confirmamos que la identificación de los clusters -según el criterio de densidad- ha sido perfecta.