מדידת דמיון
חלק מהיחידה למידה בלתי מונחית במסלול ה-Machine Learning של Coddy. שיעור 2 מתוך 51.
ב-k-NN, הקרוב ביותר פירושו המרחק הקטן ביותר. כדי למצוא קבוצות, צריך לחשב זאת עבור כל זוג שורות: טבלת מרחקים. ארבעה חברים דירגו שני סרטים, מ-1 עד 10:
ratings = np.array([[9, 2], [8, 3], [2, 9], [3, 7]]) # Ana, Ben, Cy, Dee
n = len(ratings)
table = np.zeros((n, n))
for i in range(n):
table[i] = np.sqrt(((ratings - ratings[i]) ** 2).sum(axis=1))שורה i מכילה את המרחק של החבר i מכולם. הנה table, המוצג כרשת:
התעלמו מהאלכסון של 0 — כל חבר מול עצמו. המספר הקטן ביותר שנותר מציין את הזוג הדומה ביותר, והגדול ביותר — את הזוג השונה ביותר. מרחק קטן, שורות דומות.
אתגר
קלבר מיצים מוסיף לתפריט שלו את השייק החדש של השף, שנקרא על ידי התוכנית. אילו שניים דומים כל כך שאפשר לוותר על אחד מהם? אילו שניים הכי שונים, לטעימות?
- בנו את טבלת המרחקים של
menu. - מצאו את הזוג הדומה ביותר ואת הזוג השונה ביותר: כל זוג פעם אחת, ולעולם לא שייק עם עצמו.
- הדפיסו את שניהם, עם שמות לפי הסדר בתפריט ומרחקים בדיוק של ספרה אחת אחרי הנקודה.
לתפריט אחר:
Most alike: Lemon Zing and Lime Twist (14.1 g apart)
Most different: Choco Shake and Cucumber Cool (212.6 g apart)נסו בעצמכם
import numpy as np
names = ["Berry Blast", "Green Glow", "Mango Lassi", "Kale Kick", "Tropical Sun", "Banana Oat", "Minty Melon"]
# שורה אחת לכל שייק, גרמים לכוס: פירות, ירקות עליים, יוגורט
menu = np.array([[180, 0, 120],
[90, 110, 60],
[160, 0, 150],
[60, 150, 30],
[200, 20, 40],
[100, 0, 200],
[170, 40, 0]])
# המתכון החדש של השף מתווסף לתפריט כשורה האחרונה
names.append(input())
new = [int(input()), int(input()), int(input())]
menu = np.concatenate([menu, [new]])
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה בלתי מונחית
1מציאת קבוצות
למידה ללא תוויותמדידת דמיוןK-Means באופן ידניK-Means ב-scikit-learnסיכום: חברי חדר הכושרתרגלו בעצמכם: קומפיילר Python אונליין