מתודת fit
שיעור 10 מתוך 19 בקורס מבוא ללמידת מכונה של Coddy.
אתגר
קשהממשו את המתודה fit ואת find_cluster_centroid. המתודה find_cluster_centroid מוצאת את המרכז של רשימת נקודות נתונה (אשכול). ההוראות למציאת המרכז מופיעות בשיעור הקודם. כדי לממש את fit, פעלו לפי ההוראות הבאות:
- אתחול המרכזים: תחילה, בחרו
kנקודות מתוך מערך הנתונים שישמשו כמרכזים ראשוניים. כדי לעבור את מקרי הבדיקה, בחרו את הנקודות ה־3, ה־5, ה־7, ה־9, … כמרכזים הראשוניים (בהתאם ל־kנקודות) - שיוך לאשכולות: עבור כל נקודה במערך הנתונים, מצאו את המרכז הקרוב ביותר (באמצעות מדדי מרחק כגון המרחק האוקלידי) ושייכו את הנקודה לאותו אשכול.
- עדכון המרכזים: לאחר שכל הנקודות שויכו לאשכולות, חשבו מחדש את המרכזים על ידי חישוב הממוצע של כל הנקודות בכל אשכול.
- חזרה על שלבים 2 ו־3: חזרו על השלבים שלעיל עד שהמרכזים מפסיקים להשתנות באופן משמעותי. אם המרחק בין המרכז החדש למרכז הקודם קטן מ־
0.01, עצרו
כיצד לעבור את מקרי הבדיקה:
- שמרו את המרכזים במשתנה
self.centroids. - לאחר שמצאתם מרכזים חדשים, אם המרחק הכולל בין המרכזים החדשים לקודמים קטן מ־
0.01, השאירו את המרכזים הקודמים. - סדר המרכזים חשוב. עברו תמיד על המרכזים מההתחלה ועד הסוף.
- מקרי הבדיקה ידפיסו את
self.centroidsויאמתו שהם נכונים.
נסו בעצמכם
def euclidian_distance(point_a, point_b):
return (sum([(point_a[i] - point_b[i])**2 for i in range(len(point_a))]))**0.5
class KMeans:
def __init__(self, k):
self.k = k
def find_cluster_centroid(self, cluster_points):
# כתבו כאן את הקוד שלכם
def fit(self, X_train):
# כתבו כאן את הקוד שלכם
self.centroids = ...
def predict(self, X_test):
passכל השיעורים ביחידה מבוא ללמידת מכונה
תרגלו בעצמכם: קומפיילר Python אונליין
