גבולות החלטה
חלק מהיחידה למידה מונחית במסלול ה-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 אונליין