متى تفشل خوارزمية K-Means
جزء من قسم التعلّم غير الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 14 من 51.
يصوّر K-means كل عنقود على هيئة كتلة دائرية حول مركزه. تشكّل رميات السهام لوحةَ تصويب مركزية تحيط بها حلقة، لكن K-means يقسمها إلى نصفين:
تنضم كل نقطة إلى أقرب مركز إليها، لذا يكون الحد الفاصل بين مجموعتين خطًا مستقيمًا يقع في منتصف المسافة بين المركزين. ولا يوجد خط مستقيم يفصل حلقةً عن وسطها.
المجموعات الطويلة والمنحنية أو غير المتجانسة جدًا تُفسد نتائج k-means بالطريقة نفسها. ستظل الخوارزمية تُرجع عناقيد، لذا انظر دائمًا إلى الرسم.
التحدي
متوسطرصدت طائرة مسيّرة 200 فقمة على شريطين رمليين منحنيين. يرسم الكود المبدئي الحقيقة في اللوحة left.
- جمّع الفقمات باستخدام k-means، حيث k = 2.
- في اللوحة
right، ارسم نقاط كل عنقود، مع تسميتهcluster 0أوcluster 1. - حدّد المراكز بعلامات سوداء على شكل
"X"، وسمّهاcenters. أضف وسيلة إيضاح، ثم اعرض الرسم.
يصف Coddy الرسم البياني ويحصي الفقمات التي بقيت مع شريطها الرملي الأصلي. مثل هذا، لمجموعتين:
جرّب بنفسك
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
from sklearn.cluster import KMeans
# 200 فقمة تستريح على لسانين رمليين منحنيين، كما تُرى من طائرة مسيّرة (المواضع بوحدات 100 m)
X, sandbar = make_moons(n_samples=200, noise=0.07, random_state=4)
# يرسم اللسانين الرمليين الحقيقيين على ax
def draw_truth(ax):
ax.scatter(X[sandbar == 0, 0], X[sandbar == 0, 1], s=12, label="north bar")
ax.scatter(X[sandbar == 1, 0], X[sandbar == 1, 1], s=12, label="south bar")
ax.set_title("The truth")
ax.legend()
fig, (left, right) = plt.subplots(1, 2, figsize=(9, 4))
draw_truth(left)
right.set_title("K-means, k = 2")
# اكتب شيفرتك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم غير الخاضع للإشراف
1اكتشاف المجموعات
التعلّم دون تسمياتقياس التشابهتنفيذ K-Means يدويًااستخدام K-Means في scikit-learnمراجعة: أعضاء النادي الرياضي3قراءة العناقيد
تحليل العناقيدالمراكز بوحدات حقيقيةالعناقيد مقابل التسميات المعروفةمتى تفشل خوارزمية K-Meansمراجعة: تذوّق الشايتدرّب بنفسك: مترجم Python عبر الإنترنت