Two interlocking crescent moons are the classic shape that k-means gets wrong. Measure how wrong, and how DBSCAN does on the same points.
Task: write moon_scores(n_samples, noise, eps).
make_moons(n_samples=n_samples, noise=noise, random_state=0). It returns X, y.KMeans(n_clusters=2, random_state=0, n_init=10) on X.DBSCAN(eps=eps, min_samples=5) on X.y with adjusted_rand_score.[kmeans_score, dbscan_score], each as a plain float rounded to 3 decimal places.Leave DBSCAN's noise points (-1) in the labels as they are. The score treats them as one more group.