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()
  • استفاده از کتابخانه scikit-learn برای خوشه‌بندی سلسله‌مراتبی: با استفاده از کتابخانه scikit-learn، خوشه‌بندی سلسله‌مراتبی را پیاده‌سازی کرده و بر روی داده‌ها اعمال می‌کنیم. سپس نتایج را در یک نمودار پراکندگی نمایش می‌دهیم.

    مثال:

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، خوشه‌بندی را انجام می‌دهیم و سپس برچسب‌های حاصل را بر روی نمودار پراکندگی نمایش می‌دهیم.

نتیجه

با استفاده از خوشه‌بندی سلسله‌مراتبی، می‌توانیم ساختار و رابطه بین نقاط داده را به خوبی درک کنیم و داده‌ها را به خوشه‌های مشابه تقسیم کنیم.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - تاریخ‌ها (Dates)

JavaScript – تاریخ‌ها (Dates)

آبجکت‌های تاریخ (Date) در جاوااسکریپت آبجکت‌های تاریخ در جاوااسکریپت به ما امکان کار با تاریخ و زمان را می‌دهند....

بیشتر بخوانید
JavaScript - آرایه‌های ثابت (Array Const)

JavaScript – آرایه‌های ثابت (Array Const)

جاوااسکریپت: تعریف آرایه با const در سال 2015، جاوااسکریپت کلمه کلیدی مهمی به نام const را معرفی کرد. این...

بیشتر بخوانید
JavaScript - تکرار آرایه‌ها (Array Iteration)

JavaScript – تکرار آرایه‌ها (Array Iteration)

جاوا اسکریپت: تکرار بر روی آرایه‌ها جاوا اسکریپت روش‌های مختلفی برای تکرار (Iteration) بر روی آرایه‌ها ارائه می‌دهد که...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.