Note
Go to the end to download the full example code.
k_means#
KMeans using scikit-learn according to https://www.youtube.com/watch?v=i-gxm_ofjBo.
12 from EasyFEA import Display, np, plt
13
14 from sklearn.cluster import KMeans
15 from sklearn.datasets import make_blobs
16 from sklearn.metrics import silhouette_score
17
18 if __name__ == "__main__":
19 # https://www.youtube.com/watch?v=i-gxm_ofjBo
20
21 Display.Clear()
22
23 N = 1000
24
25 K = 5
26
27 data = make_blobs(N, 2, centers=5, cluster_std=1, random_state=101)[0]
28
29 kmeans = KMeans(K, n_init="auto")
30
31 clusters = kmeans.fit_predict(data)
32
33 ax = Display.Init_Axes()
34 ax.plot(*data.T, "bo")
35 ax.set_title("data")
36
37 ax_c = Display.Init_Axes()
38 for k in range(K):
39 idx = np.where(clusters == k)
40 ax_c.plot(*data[idx].T, "o")
41 ax_c.plot(*np.mean(data[idx], 0), ls="", marker="+", c="black", zorder=10)
42
43 sil_score = []
44 sse = []
45
46 array_k = np.arange(2, 20)
47
48 for k in array_k:
49 kmeans = KMeans(k, n_init="auto")
50
51 clusters = kmeans.fit_predict(data)
52
53 sse.append(kmeans.inertia_)
54 sil_score.append(silhouette_score(data, clusters))
55
56 a_sse = Display.Init_Axes()
57 a_sse.plot(array_k, sse)
58 a_sse.set_title("sse")
59
60 a_sil = Display.Init_Axes()
61 a_sil.plot(array_k, sil_score)
62 a_sil.set_title("silhouette score")
63
64 plt.show()
Total running time of the script: (0 minutes 2.581 seconds)



