Scikit-learn library နှင့် random data များဒေတာအဖြစ် အသုံးပြု၍ K-means clustering ဥပမာ တစ်ခုကို ရှင်းပြထားသည်။
pandas , numpy , matplotlib နှင့် sklearn တို့ကို လုပ်သည်။
Pandas for reading and writing spreadsheets
Numpy for carrying out efficient computations
Matplotlib for visualization of data
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
%matplotlib inline
Two-dimensional random data များရရှိရန် generate လုပ်သည်။ ထိုဒေတာများကို သုံး၍ ပုံဆွဲသည်။wo-dimensional random data များရရှိရန် generate လုပ်သည်။
X= -2 * np.random.rand(100,2)
X1 = 1 + 2 * np.random.rand(50,2)
X [50:100, :] = X1
plt.scatter(X[ : , 0], X[ :, 1] , s = 25 , c = 'b')
plt.show()
sklearn.cluster မှ KMeans ဖြင့် fit လုပ်သည်။ n_clusters=2 သည် ဒေတာများကို (၂)စု ခွဲခြားမည်ဟုဆိုလိုသည်။ ဂရပ်ကို ကြည့်ရုံဖြင့် အစု ဘယ်နှစ်ခု ခွဲရမည်ကို သိနိုင်သည်။
from sklearn.cluster import KMeans
Kmean = KMeans(n_clusters=2)
Kmean.fit(X)
max_iter=300 သည် itration အများဆုံး အကြိမ် (၃၀၀) အထိ လုပ်မည်ဟု ဆိုလိုသည်။
centroids တည်ရှိရာ နေရာကိုဖော် ပြရန်အတွက် တန်ဖိုးများကို ဖတ်ယူသည်။
centroids = Kmean.cluster_centers_
centroids
Centroid တည်ရှိရာ နေရာကို ရရှိပြီးနောက် ဒေတာများနှင့် အတူ centroid ကို ပါ ထည့်သွင်း၍ ဂရပ် ဆွဲသည်။
plt.scatter(X[ : , 0], X[ : , 1], s =50, c= 'b')
plt.scatter(-0.95456533, -1.08966598, s=150, c='g', marker='s')
plt.scatter(1.85253191, 1.9484689, s=150, c='r', marker='s')
plt.show()
Clustering လုပ်ပြီးနောက် ဒေတာများ အားလုံးတွင် label ရရှိသွားပြီဖြစ်သည်။ တစ်နည်းအားဖြင့် မည်သည့်ဒေတာသည် မည်သည့် cluster တွင် ပါဝင်သည်ကို သတ်မှတ်ပြီးဖြစ်သည်။ အနီရောင် centroid ရှိသည့် အစုကို အနီရောင် အစု အဖြစ် အစိမ်းရောင် centroid ရှိသည့် အစုကို အစိမ်းရောင် အစု အဖြစ် သတ်မှတ်သည်။
Kmean.labels_
လုပ်ပြီးသည့် clustering မှန်မမှန် စစ်ဆေးရန် test point တစ်ခုကို ဖန်တီးသည်။
sample_test = np.array([-2.0,-1.0])
sample_test
test point တစ်ခုကို reshape() လုပ်သည်။
second_test=sample_test.reshape(1, -1)
second_test
Kmean.predict()ဖြင့် test point သည် မည်သည့် ထဲတွင် ပါဝင်သည်ကို စစ်ဆေးသည်။ 0 ဟု အဖြေထွက်လျှင် အနီရောင် အစုထဲတွင် ပါဝင်သည်။ 1 ဟု အဖြေထွက်လျှင် အစိမ်းရောင် အစုထဲတွင် ပါဝင်သည်။
Kmean.predict(second_test)
test point သည် အနီရောင် အစုထဲတွင် ပါဝင်သည်။
Ref: Understanding K-means Clustering in Machine Learning by Dr. Michael J. Garbade, Sep 13, 2018