طريقة الكوع
جزء من قسم التعلّم غير الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 7 من 51.
ارسم inertia مقابل k. عندما يقسم كل مركز جديد مجموعةً حقيقية، تهوي inertia؛ ثم يصبح المنحنى أكثر استواءً. ويُعدّ الانحناء، أي الكوع، قيمة جيدة لـ k:
قاعدة عامة: توقّف عندما يؤدي مركز إضافي إلى خفض inertia_ بنسبة أقل من الربع. تخفيضات مجموعة التفاح: 56%، ثم 69%، ثم 15% فقط. إذن k = 3:
ax.plot(ks, inertias, marker="o")
ax.axvline(3, linestyle="--")المنحنى اللطيف الذي لا يتضمن أي انحناء لا يشير إلى مجموعات واضحة. يقدّم الدرس التالي حكمًا ثانيًا.
التحدي
سهليصنّف تطبيق للنباتات المنزلية النباتاتَ إلى خطط رعاية وفق احتياجاتها من الضوء والماء. يحتوي القالب على قيم القصور الذاتي لـ k from 1 to 8، ومخطط، وcutoff.
- بدءًا من k = 1 وتصاعديًا، توقّف عند قيمة k التي يخفض فيها الانتقال إلى قيمة k التالية القصورَ الذاتي بأقل من
cutoff. اطبع قيمة k هذه. - ارسم القصور الذاتي مقابل k باستخدام نقاط، وأضف خطًا عموديًا متقطعًا عند قيمة k التي اخترتها، ثم اعرض المخطط.
في تطبيق آخر، قيمة cutoff هي 0.25:
Care plans: 3بعد ذلك، يصف Coddy مخططك.
جرّب بنفسك
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# لا تغيّر الأسطر أدناه
rng = np.random.default_rng(17)
# أربعة أنواع من النباتات: احتياج كل نوع المعتاد إلى الضوء والماء، وعدد النباتات منه
kinds = [(8.5, 2, 35), (2.5, 7.5, 30), (5, 5, 30), (8, 8, 25)]
parts = []
for l, w, n in kinds:
parts.append(np.column_stack([rng.normal(l, 0.8, n), rng.normal(w, 0.8, n)]))
# 120 نبتة منزلية، صف واحد لكل منها: احتياجها إلى الضوء والماء، بتقييم من 1 إلى 10
plants = np.clip(np.round(np.concatenate(parts), 1), 1, 10)
# قيمة Inertia لكل k من 1 إلى 8، مأخوذة من Inertia
ks = list(range(1, 9))
inertias = []
for k in ks:
km = KMeans(n_clusters=k, n_init=10, random_state=0)
km.fit(plants)
inertias.append(km.inertia_)
cutoff = float(input())
fig, ax = plt.subplots()
ax.set_title("Elbow: Care Plans")
ax.set_xlabel("k")
ax.set_ylabel("Inertia")
# اكتب شيفرتك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم غير الخاضع للإشراف
1اكتشاف المجموعات
التعلّم دون تسمياتقياس التشابهتنفيذ K-Means يدويًااستخدام K-Means في scikit-learnمراجعة: أعضاء النادي الرياضيتدرّب بنفسك: مترجم Python عبر الإنترنت