שיטת predict
שיעור 8 מתוך 19 בקורס מבוא ללמידת מכונה של Coddy.
אתגר
בינונימלאו את המתודה predict.
המתודה צריכה לקבל רשימה של נקודות חדשות X.
עבור כל נקודה חדשה, חשבו את המרחק בינה לבין כל הנקודות האחרות השמורות ב-self.points. חלצו את התוויות של self.k הנקודות הקרובות ביותר.
מצאו את תווית הרוב מבין הנקודות הקרובות ביותר; זו תהיה המחלקה החזויה.
לדוגמה, הנה הנקודות והתוויות שלנו:
| נקודות | (1, 5) | (5, 0) | (3, 2) | (8, 1) | (4, 4) | (7, 7) |
| תוויות | A | B | A | B | C | A |
הנה נקודה חדשה (3, 3)
המרחק בין נקודה זו לכל הנקודות האחרות הוא:
| נקודות | (1, 5) | (5, 0) | (3, 2) | (8, 1) | (4, 4) | (7, 7) |
| המרחק מ-(3, 3) | 8 | 13 | 1 | 29 | 2 | 32 |
| תוויות | A | B | A | B | C | A |
כעת, אם k = 3, עלינו למצוא את 3 הנקודות הקרובות ביותר לנקודה החדשה שלנו. אלה הנקודות הקרובות ביותר: (3, 2), (1, 5) ו-(4, 4). התוויות המתאימות לנקודות האלה הן: A, A, C. יש לנו 2 תוויות A ותווית C אחת. A היא תווית הרוב, ולכן הנקודה החדשה מסווגת כ-A.
המתודה predict צריכה להחזיר רשימה של התוויות שנקבעו עבור הנקודות החדשות.
כדי למצוא את תווית הרוב ברשימת תוויות, השתמשו ב-max(set(labels), key = labels.count)
נסו בעצמכם
class KNN:
def __init__(self, k):
self.points = None
self.labels = None
self.k = k
def distance(self, point_a, point_b):
# Write your code here
return (sum([(point_a[i] - point_b[i])**2 for i in range(len(point_a))]))**0.5
def fit(self, X_train, y_train):
# Write your code here
self.points = X_train
self.labels = y_train
def predict(self, X_test):
passכל השיעורים ביחידה מבוא ללמידת מכונה
תרגלו בעצמכם: קומפיילר Python אונליין