2D clustering examples

CLARANS on blobs

CLARANS clustering on a synthetic blobs dataset.

 1"""Generate `gallery_clusters_blobs.png`.
 2
 3Standalone example that demonstrates CLARANS on synthetic blobs.
 4"""
 5from pathlib import Path
 6import matplotlib
 7matplotlib.use("Agg")
 8import matplotlib.pyplot as plt
 9from sklearn.datasets import make_blobs
10from clarans import CLARANS
11
12
13def main():
14    X, _ = make_blobs(n_samples=500, centers=4, cluster_std=0.60, random_state=42)
15    model = CLARANS(n_clusters=4, numlocal=5, random_state=42)
16    model.fit(X)
17
18    fig, ax = plt.subplots(figsize=(6, 4))
19    ax.scatter(X[:, 0], X[:, 1], c=model.labels_, s=20, cmap="tab10", alpha=0.8)
20    ax.scatter(model.cluster_centers_[:, 0], model.cluster_centers_[:, 1], c="black", marker="x", s=100)
21    ax.set_title("CLARANS: blobs")
22    ax.set_xticks([])
23    ax.set_yticks([])
24
25    out = "gallery_clusters_blobs.png"
26    fig.savefig(out, bbox_inches="tight", dpi=150)
27    print(f"Saved {out}")
28
29
30if __name__ == "__main__":
31    main()
CLARANS on moons

CLARANS on two interleaving moons.

 1"""Generate `gallery_clusters_moons.png`.
 2
 3Standalone example for moons dataset.
 4"""
 5import matplotlib
 6matplotlib.use("Agg")
 7import matplotlib.pyplot as plt
 8from sklearn.datasets import make_moons
 9from clarans import CLARANS
10
11
12def main():
13    X, _ = make_moons(n_samples=500, noise=0.05, random_state=42)
14    model = CLARANS(n_clusters=2, numlocal=5, random_state=42)
15    model.fit(X)
16
17    fig, ax = plt.subplots(figsize=(6, 4))
18    ax.scatter(X[:, 0], X[:, 1], c=model.labels_, s=20, cmap="tab10", alpha=0.8)
19    ax.scatter(model.cluster_centers_[:, 0], model.cluster_centers_[:, 1], c="black", marker="x", s=100)
20    ax.set_title("CLARANS: moons")
21    ax.set_xticks([])
22    ax.set_yticks([])
23
24    out = "gallery_clusters_moons.png"
25    fig.savefig(out, bbox_inches="tight", dpi=150)
26    print(f"Saved {out}")
27
28
29if __name__ == "__main__":
30    main()
CLARANS on anisotropic data

CLARANS on an anisotropic dataset.

 1"""Generate `gallery_clusters_anisotropic.png`.
 2
 3Standalone example for anisotropic dataset.
 4"""
 5import numpy as np
 6import matplotlib
 7matplotlib.use("Agg")
 8import matplotlib.pyplot as plt
 9from sklearn.datasets import make_blobs
10from clarans import CLARANS
11
12
13def main():
14    X, _ = make_blobs(n_samples=500, centers=3, random_state=170)
15    transformation = np.array([[0.6, -0.6], [-0.4, 0.8]])
16    X = X.dot(transformation)
17
18    model = CLARANS(n_clusters=3, numlocal=5, random_state=42)
19    model.fit(X)
20
21    fig, ax = plt.subplots(figsize=(6, 4))
22    ax.scatter(X[:, 0], X[:, 1], c=model.labels_, s=20, cmap="tab10", alpha=0.8)
23    ax.scatter(model.cluster_centers_[:, 0], model.cluster_centers_[:, 1], c="black", marker="x", s=100)
24    ax.set_title("CLARANS: anisotropic")
25    ax.set_xticks([])
26    ax.set_yticks([])
27
28    out = "gallery_clusters_anisotropic.png"
29    fig.savefig(out, bbox_inches="tight", dpi=150)
30    print(f"Saved {out}")
31
32
33if __name__ == "__main__":
34    main()