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

نتیجه

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

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
Python - محدود کردن داده (MongoDB Limit)

Python – محدود کردن داده (MongoDB Limit)

Python MongoDB محدود کردن نتایج برای محدود کردن نتایج در MongoDB، از متد limit() استفاده می‌کنیم. متد limit() یک...

بیشتر بخوانید
Python - بروزرسانی (MongoDB Update)

Python – بروزرسانی (MongoDB Update)

به‌روزرسانی یک رکورد برای به‌روزرسانی یک رکورد یا سند در MongoDB، از متد update_one() استفاده می‌کنیم. پارامتر اول متد...

بیشتر بخوانید
Python - حذف کالکشن (MongoDB Drop Collection)

Python – حذف کالکشن (MongoDB Drop Collection)

حذف کالکشن شما می‌توانید یک جدول یا کالکشن در MongoDB را با استفاده از متد drop() حذف کنید. مثالحذف...

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

نظرات

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

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