k_means#

KMeans using scikit-learn according to https://www.youtube.com/watch?v=i-gxm_ofjBo.

  • data
  • k means
  • sse
  • silhouette score
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 0.768 seconds)

Gallery generated by Sphinx-Gallery