📚 The CoCalc Library - books, templates and other resources
License: OTHER
import numpy as np1import matplotlib.pyplot as plt2from sklearn.cluster import DBSCAN3from sklearn.datasets import make_blobs45from .plot_helpers import discrete_scatter, cm3678def plot_dbscan():9X, y = make_blobs(random_state=0, n_samples=12)1011dbscan = DBSCAN()12clusters = dbscan.fit_predict(X)13clusters1415fig, axes = plt.subplots(3, 4, figsize=(11, 8),16subplot_kw={'xticks': (), 'yticks': ()})17# Plot clusters as red, green and blue, and outliers (-1) as white18colors = [cm3(1), cm3(0), cm3(2)]19markers = ['o', '^', 'v']2021# iterate over settings of min_samples and eps22for i, min_samples in enumerate([2, 3, 5]):23for j, eps in enumerate([1, 1.5, 2, 3]):24# instantiate DBSCAN with a particular setting25dbscan = DBSCAN(min_samples=min_samples, eps=eps)26# get cluster assignments27clusters = dbscan.fit_predict(X)28print("min_samples: %d eps: %f cluster: %s"29% (min_samples, eps, clusters))30if np.any(clusters == -1):31c = ['w'] + colors32m = ['o'] + markers33else:34c = colors35m = markers36discrete_scatter(X[:, 0], X[:, 1], clusters, ax=axes[i, j], c=c,37s=8, markers=m)38inds = dbscan.core_sample_indices_39# vizualize core samples and clusters.40if len(inds):41discrete_scatter(X[inds, 0], X[inds, 1], clusters[inds],42ax=axes[i, j], s=15, c=colors,43markers=markers)44axes[i, j].set_title("min_samples: %d eps: %.1f"45% (min_samples, eps))46fig.tight_layout()474849