Menu
CoddyTech

מדידת דמיון

חלק מהיחידה למידה בלתי מונחית במסלול ה-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, המוצג כרשת:

רשת בגודל 4 על 4 של המרחקים בין Ana, Ben, Cy ו-Dee. האלכסון מכיל 0.0. שני התאים של Ana ו-Ben, שבהם מופיע 1.4, מודגשים כערכים הקטנים ביותר מחוץ לאלכסון; המרחק בין Ana ל-Cy הוא הגדול ביותר, 9.9

התעלמו מהאלכסון של 0 — כל חבר מול עצמו. המספר הקטן ביותר שנותר מציין את הזוג הדומה ביותר, והגדול ביותר — את הזוג השונה ביותר. מרחק קטן, שורות דומות.

challenge icon

אתגר

קל

בר מיצים מוסיף לתפריט שלו את השייק החדש של השף, שנקרא על ידי התוכנית. אילו שניים דומים כל כך שאפשר לוותר על אחד מהם? אילו שניים הכי שונים, לטעימות?

  1. בנו את טבלת המרחקים של menu.
  2. מצאו את הזוג הדומה ביותר ואת הזוג השונה ביותר: כל זוג פעם אחת, ולעולם לא שייק עם עצמו.
  3. הדפיסו את שניהם, עם שמות לפי הסדר בתפריט ומרחקים בדיוק של ספרה אחת אחרי הנקודה.

לתפריט אחר:

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

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

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

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

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