K-means
K-means یک روش «یادگیری نظارت نشده (Unsupervised)» برای خوشه بندی است. یعنی بدون «برچسب (Label)» کار می کند. هدف، گروه کردن نقاط مشابه است.
ایده K-means با یک نگاه
ابتدا هر نقطه به یکی از K خوشه ها می رود. سپس «مرکز خوشه (Centroid)» حساب می شود. بعد هر نقطه به نزدیک ترین مرکز می رود. این کار تکرار می شود تا جابه جایی متوقف شود.
نمایش نقاط نمونه
اول چند نقطه می سازیم و روی نمودار می ریزیم.
import matplotlib.pyplot as plt
x = [4, 5, 10, 4, 3, 11, 14, 6, 10, 12]
y = [21, 19, 24, 17, 16, 25, 24, 22, 21, 21]
plt.scatter(x, y)
plt.show()
الگوی آرنج (Elbow) برای انتخاب K
برای انتخاب K از «الگوی آرنج» کمک می گیریم. شاخص «اینرسی (Inertia)» را برای Kهای مختلف رسم می کنیم. جایی که نمودار خم می شود، همان آرنج است.
from sklearn.cluster import KMeans
data = list(zip(x, y))
inertias = []
for i in range(1, 11):
kmeans = KMeans(n_clusters = i)
kmeans.fit(data)
inertias.append(kmeans.inertia_)
plt.plot(range(1, 11), inertias, marker = 'o')
plt.title('Elbow method')
plt.xlabel('Number of clusters')
plt.ylabel('Inertia')
plt.show()
در نمودار، K=2 نقطه آرنج است. بنابراین K را 2 می گذاریم.
آموزش مدل و رنگ کردن خوشه ها
اکنون مدل را با K=2 آموزش می دهیم. سپس نقاط را با رنگ خوشه نمایش می دهیم.
kmeans = KMeans(n_clusters = 2)
kmeans.fit(data)
plt.scatter(x, y, c = kmeans.labels_)
plt.show()
گام های عملی
- نقاط را آماده و رسم کن.
- اینرسی را برای چند K حساب کن.
- آرنج را پیدا کن و K را تعیین کن.
- مدل K-means را fit کن.
- نقاط را با برچسب خوشه رنگ کن.
جمع بندی سریع
- K-means خوشه بندی بدون برچسب است.
- مرکز خوشه معیار نزدیکی است.
- الگوی آرنج K مناسب را می دهد.
- برچسب ها از kmeans.labels_ می آیند.
برای مرور قبل، صفحه پیش پردازش داده های دسته ای را ببین. همچنین خوشه بندی دیگر را در خوشه بندی سلسله مراتبی بررسی کن.