Python – خوشهبندی سلسله مراتبی (Hierarchical Clustering)
خوشهبندی سلسلهمراتبی چیست؟
خوشهبندی سلسلهمراتبی یک روش یادگیری بدون نظارت برای خوشهبندی نقاط داده است. این الگوریتم با اندازهگیری تفاوتها بین دادهها، خوشهها را ایجاد میکند. روش یادگیری بدون نظارت به این معنی است که مدل نیازی به آموزش ندارد و نیازی به متغیر “هدف” نیست. این روش میتواند برای هر نوع دادهای استفاده شود تا رابطه بین نقاط داده را به تصویر کشیده و تفسیر کند.
نحوه عملکرد
ما از خوشهبندی تجمعی (Agglomerative Clustering) استفاده خواهیم کرد، که نوعی از خوشهبندی سلسلهمراتبی است و از یک رویکرد از پایین به بالا پیروی میکند. در این روش، هر نقطه داده به عنوان یک خوشه مجزا در نظر گرفته میشود و سپس خوشهها با نزدیکترین فاصله به هم ملحق میشوند تا خوشههای بزرگتر تشکیل شود. این مرحله تکرار میشود تا یک خوشه بزرگ که شامل تمامی نقاط داده است، شکل گیرد.
مراحل انجام کار
-
نمایش دادهها: ابتدا دادهها را به صورت یک نمودار پراکندگی (scatter plot) نمایش میدهیم.
مثال:
import numpy as np
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()
-
محاسبه پیوند (Linkage) و نمایش دندروگرام (Dendrogram): پیوند و پیوستگی دادهها را با استفاده از فاصله اقلیدسی (Euclidean Distance) و روش پیوند وارد (Ward Linkage) محاسبه کرده و آن را به صورت دندروگرام نمایش میدهیم.
مثال:
import numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
x = [4, 5, 10, 4, 3, 11, 14 , 6, 10, 12]
y = [21, 19, 24, 17, 16, 25, 24, 22, 21, 21]
data = list(zip(x, y))
linkage_data = linkage(data, method='ward', metric='euclidean')
dendrogram(linkage_data)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import AgglomerativeClustering
x = [4, 5, 10, 4, 3, 11, 14 , 6, 10, 12]
y = [21, 19, 24, 17, 16, 25, 24, 22, 21, 21]
data = list(zip(x, y))
hierarchical_cluster = AgglomerativeClustering(n_clusters=2, affinity='euclidean', linkage='ward')
labels = hierarchical_cluster.fit_predict(data)
plt.scatter(x, y, c=labels)
plt.show()
توضیح مثال
- وارد کردن ماژولها: از NumPy، Matplotlib، SciPy و scikit-learn برای پردازش و نمایش دادهها استفاده میکنیم.
- ایجاد آرایهها: دادهها را به صورت نقاط (x, y) تعریف میکنیم و به صورت آرایههایی به نام
data
ذخیره میکنیم. - محاسبه پیوند: پیوند و پیوستگی نقاط را با استفاده از فاصله اقلیدسی و روش پیوند وارد محاسبه کرده و دندروگرام را ترسیم میکنیم.
- خوشهبندی با scikit-learn: با استفاده از کلاس
AgglomerativeClustering
، خوشهبندی را انجام میدهیم و سپس برچسبهای حاصل را بر روی نمودار پراکندگی نمایش میدهیم.
نتیجه
با استفاده از خوشهبندی سلسلهمراتبی، میتوانیم ساختار و رابطه بین نقاط داده را به خوبی درک کنیم و دادهها را به خوشههای مشابه تقسیم کنیم.
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام