2D clustering examples
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 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 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()