آموزش رایگان صفر تا صد یادگیری ماشین (Machine Learning) به زبان ساده
-
خوش آمدید به یادگیری ماشین!
-
میانگین، میانه و مد در یادگیری ماشین
-
انحراف معیار (Standard Deviation) در یادگیری ماشین
-
صدک (Percentile) در یادگیری ماشین
-
توزیع دادهها در یادگیری ماشین
-
توزیع نرمال دادهها در یادگیری ماشین
-
نمودار پراکندگی (Scatter Plot) در یادگیری ماشین
-
رگرسیون خطی در یادگیری ماشینی
-
رگرسیون چندجملهای در یادگیری ماشین
-
رگرسیون چندگانه در یادگیری ماشین
-
روش Train/Test در یادگیری ماشین
-
درخت تصمیمگیری در یادگیری ماشین
-
ماتریس سردرگمی (Confusion Matrix) در یادگیری ماشین
-
خوشهبندی سلسلهمراتبی (Hierarchical Clustering) در یادگیری ماشین
-
رگرسیون لجستیک در یادگیری ماشین
-
Grid Search در یادگیری ماشین
-
پردازش دادههای دستهای (Categorical Data) در یادگیری ماشین
-
خوشهبندی K-Means در یادگیری ماشین
-
یادگیری Bootstrap Aggregation (Bagging) در یادگیری ماشین
-
کراس والیدیشن (Cross Validation) در یادگیری ماشین
-
منحنی AUC - ROC در یادگیری ماشین
-
الگوریتم K-Nearest Neighbors (KNN) در یادگیری ماشین
خوشهبندی K-Means در یادگیری ماشین
یکی از پرکاربردترین الگوریتمهای یادگیری ماشین برای خوشهبندی دادهها K-Means است. در این مقاله، بهصورت ساده و مرحلهبهمرحله، نحوه کار با این الگوریتم را همراه با مثالهای عملی بررسی میکنیم.
📌 فهرست مطالب
در یادگیری ماشین K-Means چیست؟
K-Means یک روش یادگیری ماشین بدون نظارت (Unsupervised Learning) است که برای گروهبندی دادهها (Clustering) استفاده میشود. این الگوریتم تلاش میکند دادههای مشابه را در یک گروه قرار دهد و بین آنها خوشههای (Clusters) جداگانه ایجاد کند.
✅ کاربردهای K-Means:
- تقسیمبندی مشتریان در بازاریابی 🎯
- تحلیل دادههای زیستی 🧬
- تشخیص الگوها در تصاویر 🖼️
🔹 الگوریتم K-Means چگونه کار میکند؟
این الگوریتم در چند مرحله ساده انجام میشود:
1️⃣ انتخاب تعداد خوشهها (K): ابتدا تعداد خوشههای مورد نظر مشخص میشود.
2️⃣ اختصاص اولیه: هر داده بهصورت تصادفی به یکی از K خوشه اختصاص داده میشود.
3️⃣ محاسبه مرکز خوشه (Centroid): میانگین مختصات نقاط موجود در هر خوشه محاسبه و بهعنوان مرکز خوشه در نظر گرفته میشود.
4️⃣ انتساب مجدد دادهها: هر نقطه به خوشهای که نزدیکترین مرکز را دارد، منتقل میشود.
5️⃣ تکرار مراحل: این روند ادامه مییابد تا زمانی که دیگر تغییری در خوشهها رخ ندهد.
🔹 تصویر ذهنی:
✅ فرض کنید تعدادی نقطه روی یک صفحه داریم که قرار است آنها را بر اساس موقعیتشان در گروههای مختلف قرار دهیم. این کار همان چیزی است که K-Means انجام میدهد!
🔹 روش Elbow برای تعیین مقدار K
مشکل اصلی در K-Means: چطور تعداد خوشههای مناسب (K) را پیدا کنیم؟ 🤔
📌 روش Elbow یک تکنیک محبوب برای انتخاب مقدار K است. این روش، مقدار Inertia (میزان پراکندگی دادهها داخل هر خوشه) را برای مقادیر مختلف K محاسبه کرده و روی نمودار رسم میکند.
✅ مراحل روش Elbow:
- مقدار Inertia برای هر مقدار K (مثلاً از 1 تا 10) محاسبه میشود.
- نموداری از مقدار Inertia بر حسب K رسم میشود.
- جایی که کاهش Inertia بهصورت ناگهانی کم شده و به یک خط تقریباً مستقیم تبدیل میشود، نقطه Elbow یا آرنج است.
🔹 نتیجه: مقدار K در نقطه Elbow مقدار بهینه برای خوشهبندی دادههاست.
🔹 پیادهسازی عملی K-Means در پایتون
حالا که با اصول K-Means آشنا شدیم، بیایید آن را در پایتون پیادهسازی کنیم.
1️⃣ نمایش دادهها بهصورت نقطهای (Scatter Plot)
ابتدا تعدادی نقطه روی نمودار رسم میکنیم:
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()
🔹 خروجی: نقاط داده روی صفحه رسم میشوند که میتوانیم خوشهبندی را روی آنها اعمال کنیم.
2️⃣ استفاده از روش Elbow برای پیدا کردن مقدار K
در این مرحله، روش Elbow را برای یافتن تعداد بهینه خوشهها اجرا میکنیم.
from sklearn.cluster import KMeans
data = list(zip(x, y)) # تبدیل دادهها به نقاط قابل پردازش
inertias = []
# بررسی مقدار Inertia برای مقادیر مختلف K
for i in range(1, 11):
kmeans = KMeans(n_clusters=i)
kmeans.fit(data)
inertias.append(kmeans.inertia_)
# رسم نمودار Elbow
plt.plot(range(1, 11), inertias, marker='o')
plt.title('Elbow Method')
plt.xlabel('Number of Clusters')
plt.ylabel('Inertia')
plt.show()
🔹 نتیجه: نقطه Elbow نشان میدهد که مقدار بهینه K احتمالاً 2 است.
3️⃣ اجرای الگوریتم K-Means و نمایش نتایج
حالا که مقدار K = 2 را تعیین کردیم، الگوریتم K-Means را اجرا میکنیم:
kmeans = KMeans(n_clusters=2)
kmeans.fit(data)
# نمایش نتایج خوشهبندی
plt.scatter(x, y, c=kmeans.labels_)
plt.show()
🔹 جمعبندی و نتیجهگیری
✅ در این مقاله، یاد گرفتیم که K-Means یکی از سادهترین و موثرترین الگوریتمهای خوشهبندی است.
✅ با استفاده از روش Elbow میتوانیم مقدار K بهینه را پیدا کنیم.
✅ در نهایت، با پیادهسازی K-Means در پایتون، خوشهبندی را روی دادهها اجرا کردیم.