القصور الذاتي
جزء من قسم التعلّم غير الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 6 من 51.
يتناول هذا الفصل كيفية اختيار k. وبحلول نهايته، ستختاره لتوصيلات مخبز وترسم خريطة للمناطق:
أولًا، مقياس. تجمع القصور الذاتي مربعات المسافات من كل نقطة إلى مركز مجموعتها: وتكون القيمة صغيرة عندما تتجمع النقاط حول مراكزها.
يحتفظ KMeans بها في inertia_. بالنسبة إلى 180 تفاحة:
for k in [1, 2, 3, 4]:
km = KMeans(n_clusters=k, n_init=10, random_state=0)
km.fit(X)
print(k, round(km.inertia_))يعرض هذا:
1 1718
2 752
3 230
4 196مراكز أكثر وأذرع أقصر: يتناقص القصور الذاتي دائمًا كلما زادت k. وعندما يكون هناك مركز واحد لكل نقطة، تكون قيمته 0، لذا فالأصغر ليس الأفضل.
التحدي
سهليقوم مصنع فخار بتعبئة المزهريات في صناديق بأحجام قليلة. يُخصَّص لكل مزهرية أقرب حجم؛ ويقيس القصور الذاتي مدى سوء ملاءمتها. يقرأ البرنامج budget، وهو مقدار سوء الملاءمة الذي يقبله مصنع الفخار.
- جرّب k = 1، 2، 3 وهكذا: درّب KMeans على
vasesواطبع قيمة القصور الذاتي لكل k بعد تقريبها. - توقّف عند أول k تكون قيمة القصور الذاتي لديه ضمن الميزانية، واطبعه.
لمصنع فخار آخر:
k = 1, inertia 15120
k = 2, inertia 4811
k = 3, inertia 1290
Box sizes needed: 3جرّب بنفسك
import numpy as np
from sklearn.cluster import KMeans
# لا تغيّر الأسطر أدناه
rng = np.random.default_rng(8)
# أربعة أنواع من المزهريات: الارتفاع والعرض المعتادان بوحدة cm، وعدد المزهريات من كل نوع
kinds = [(15, 8, 25), (38, 13, 25), (22, 22, 20), (58, 26, 10)]
parts = []
for h, w, n in kinds:
parts.append(np.column_stack([rng.normal(h, 2.5, n), rng.normal(w, 2, n)]))
# 80 مزهرية، صف واحد لكل منها: الارتفاع والعرض بوحدة cm
vases = np.round(np.concatenate(parts), 1)
# أقصى مقدار لعدم الملاءمة، مقاسًا بالقصور الذاتي، تقبله ورشة الفخار
budget = int(input())
# اكتب الكود الخاص بك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم غير الخاضع للإشراف
1اكتشاف المجموعات
التعلّم دون تسمياتقياس التشابهتنفيذ K-Means يدويًااستخدام K-Means في scikit-learnمراجعة: أعضاء النادي الرياضيتدرّب بنفسك: مترجم Python عبر الإنترنت