تنفيذ K-Means يدويًا
جزء من قسم التعلّم غير الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 3 من 51.
خوارزمية K-means تكرّر جولة من خطوتين للعثور على k عناقيد. الإسناد: تنضم كل نقطة إلى أقرب مركز. التحريك: ينتقل كل مركز إلى متوسط نقاطه. ثلاث عربات للمثلجات:
جولة واحدة في NumPy، حيث إن dists جدول مسافات يحتوي على عمود واحد لكل مركز:
labels = dists.argmin(axis=1) # تعيين
for c in range(k):
centers[c] = X[labels == c].mean(axis=0) # نقلتعطي argmin(axis=1) أصغر عمود في كل صف: أي أقرب مركز إليه. تستقر المراكز جولةً بعد جولة؛ وعندما لا يتحرك أيٌّ منها، تنتهي خوارزمية k-means.
التحدي
سهلتعيد شركة لصناعة القمصان ضبط مقاساتها S وM وL لتناسب زبائن اليوم. يحدّد مخطط المقاسات القديم مراكز البداية، وتعطي distances(people, centers) جدول المسافات، ويقرأ البرنامج عدد الجولات المطلوب تنفيذها.
- في كل جولة: حدّد المقاس المناسب لكل شخص، ثم حرّك كل مركز.
- اطبع مركز كل مقاس وعدد الأشخاص الذين انتموا إليه في الجولة الأخيرة، كما هو موضح أدناه.
لشركة أخرى:
Rounds run: 2
S: chest 87.3 cm, length 65.1 cm, 14 people
M: chest 95.0 cm, length 68.9 cm, 31 people
L: chest 104.8 cm, length 72.6 cm, 45 peopleجرّب بنفسك
import numpy as np
# لا تغيّر الأسطر أدناه
rng = np.random.default_rng(12)
chest = np.concatenate([rng.normal(88, 3, 30), rng.normal(98, 3.5, 35), rng.normal(110, 4, 25)])
length = np.concatenate([rng.normal(66, 1.8, 30), rng.normal(70, 2, 35), rng.normal(75, 2.2, 25)])
# 90 عميلًا، صف واحد لكل منهم: محيط الصدر والطول بوحدة cm
people = np.round(np.column_stack([chest, length]), 1)
# يحدّد جدول المقاسات القديم المراكز الابتدائية: S، M، L
sizes = ["S", "M", "L"]
centers = np.array([[85.0, 64.0], [90.0, 67.0], [96.0, 69.0]])
rounds = int(input())
# جدول المسافات: صف واحد لكل شخص، وعمود واحد لكل مركز
def distances(X, centers):
table = np.zeros((len(X), len(centers)))
for c in range(len(centers)):
table[:, c] = np.sqrt(((X - centers[c]) ** 2).sum(axis=1))
return table
# اكتب الكود الخاص بك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم غير الخاضع للإشراف
1اكتشاف المجموعات
التعلّم دون تسمياتقياس التشابهتنفيذ K-Means يدويًااستخدام K-Means في scikit-learnمراجعة: أعضاء النادي الرياضيتدرّب بنفسك: مترجم Python عبر الإنترنت