حدود القرار
جزء من قسم التعلّم الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 8 من 58.
الحدّ الفاصل للقرار هو الموضع الذي تتغير فيه إجابة النموذج. لرؤيته، اسأل النموذج عند كل نقطة في المخطط، المرتب على شكل شبكة:
تُزاوج np.meshgrid كل قيمة x مع كل قيمة y. حوِّل الأزواج إلى صفوف، وتنبأ بها كلها، ثم أعد تشكيل الإجابات لتطابق شكل الشبكة:
xx, yy = np.meshgrid(np.linspace(2, 16, 100), np.linspace(0.5, 6.5, 100))
grid = np.column_stack([xx.flatten(), yy.flatten()])
zz = model.predict(grid).reshape(xx.shape)
ax.contourf(xx, yy, zz, levels=[-0.5, 0.5, 1.5], colors=["C0", "C1"], alpha=0.3)تملأ contourf مساحة كل رمز فئة: تضع levels الحدود في منتصف المسافة بين الرموز، وتطابق colors ألوان النقاط. ارسم النقاط بعدها، فوقها.
التحدي
سهلتفرز آلة بيع العملات حسب الحجم والوزن. يدرّب الكود المبدئي نموذج k-NN على coins.csv (رموز الفئات من 0 إلى 2)؛ وترسم الدالة draw_coins(ax) العملات.
- أنشئ شبكة من 100 في 100 نقطة،
xxوyy: من 18 إلى 26 مم أفقيًا، ومن 3 إلى 9 غ عموديًا. - تنبّأ بفئة كل نقطة وخزّن النتائج في
zz، بحيث يكون شكلها مثل شكل الشبكة. - لوّن الخريطة بالألوان من C0 إلى C2، ثم ارسم العملات واعرض الشكل.
مثل هذا الشكل:
عملات بلد آخر، لذا ستكون المناطق مختلفة.
يصف Coddy خريطتك.
جرّب بنفسك
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsClassifier
# صف واحد لكل عملة قاسها الجهاز: القطر (mm)، الوزن (g)، القيمة بالسنتات
coins = pd.read_csv("coins.csv")
X = np.column_stack([coins["diameter_mm"], coins["weight_g"]])
# رموز الفئات: 0 لـ 10c، و1 لـ 20c، و2 لـ 50c
y = coins["value_c"].map({10: 0, 20: 1, 50: 2})
names = ["10c", "20c", "50c"]
model = KNeighborsClassifier(n_neighbors=5)
model.fit(X, y)
# يرسم العملات على ax، بلون واحد لكل فئة: C0، C1، C2
def draw_coins(ax):
for code in range(3):
ax.scatter(X[y == code, 0], X[y == code, 1], s=20, label=names[code])
ax.legend()
fig, ax = plt.subplots()
ax.set_title("Coin Sorter Map")
ax.set_xlabel("Diameter (mm)")
ax.set_ylabel("Weight (g)")
# اكتب الكود الخاص بك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم الخاضع للإشراف
تدرّب بنفسك: مترجم Python عبر الإنترنت