Menu
CoddyTech

גבולות החלטה

חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 8 מתוך 58.

גבול החלטה הוא המקום שבו התשובה של מודל משתנה. כדי לראות אותו, שאל את המודל בכל נקודה בתרשים, המסודר כרשת:

80 פלפלי הצ׳ילי מעל רשת של נקודות קטנות. כל נקודה צבועה לפי תשובת המודל באותו מקום: כתום עבור חריף משמאל, כחול עבור עדין מימין, ונפגשים לאורך קו מדורג

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 תואם את הנקודות. ציירו את הנקודות אחר כך, מעליו.

challenge icon

אתגר

קל

מכונת ממכר ממיינת מטבעות לפי גודל ומשקל. קוד הפתיחה מתאים מודל k-NN על coins.csv (קודי מחלקה מ-0 עד 2); draw_coins(ax) מציירת אותם.

  1. צרו רשת בגודל 100 על 100 בשם xx, yy: מ-18 עד 26 מ״מ לרוחב, ומ-3 עד 9 גרם לגובה.
  2. בצעו חיזוי לכל נקודה ושמרו את התוצאות ב-zz, במבנה שתואם לרשת.
  3. מלאו את המפה בצבעים C0 עד C2, ואז ציירו את המטבעות והציגו אותה.

כמו זו:

מפת מיון מטבעות: שלושה אזורים רכים, כחול עבור 10c בפינה השמאלית התחתונה, כתום עבור 5c באמצע, ירוק עבור 25c מימין, בכל אזור המטבעות שלו מוצגים מעליו ומקרא

מטבעות של מדינה אחרת, ולכן אזורים אחרים.

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)")

# כתבו את הקוד שלכם למטה
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה למידה מונחית

תרגלו בעצמכם: קומפיילר Python אונליין