Menu
CoddyTech

איך k-NN מקבל החלטות

חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 6 מתוך 58.

הפרק הזה פותח את k-NN. בסופו תשרטטו את המפה שלו לכל נתונים, כמו זו של פלפלי צ'ילי עדינים וחריפים:

80 פלפלי צ'ילי לפי אורך ועובי הדופן על מפה מוצללת: אזור כתום משמאל שבו המודל חוזה חריפות, ואזור כחול מימין שבו הוא חוזה עדינות

כדי לסווג פלפל צ'ילי חדש, שכנים קרובים ביותר מוצאים את k פלפלי הצ'ילי באימון הקרובים אליו ביותר, והם מצביעים:

תקריב של פלפלי הצ'ילי עם כוכב שחור שמייצג פלפל חדש. קווים אפורים מחברים אותו ל-5 פלפלי הצ'ילי הקרובים אליו ביותר: 3 חריפים ו-2 מתונים, ולכן החריפים מנצחים

הקרוב ביותר פירושו המרחק הקטן ביותר, זה שפגשת ביחידה 2. בוחרים k:

model = KNeighborsClassifier(n_neighbors=5)

n_neighbors הוא k, שערכו 5 אלא אם מציינים אחרת. כשיש שתי מחלקות, k אי-זוגי לעולם לא יוביל לתיקו.

challenge icon

אתגר

קל

מועדון אסטרונומיה ממיין את הכוכבים שבקובץ stars.csv לננסים ולענקים לפי הטמפרטורה והבהירות. קוד הפתיחה קורא נתונים של כוכב חדש ושל k.

  1. מצאו ידנית את k הכוכבים הקרובים ביותר: הוסיפו עמודת distance, ואז מיינו.
  2. הדפיסו כמה מהם ענקים, ואז מי קיבל את רוב הקולות.
  3. בדקו באמצעות מודל k-NN עם אותו k, שאומן על כל הכוכבים.

עבור כוכב ו-k = 5 של מועדון אחר:

Giants among the nearest 5: 4
By hand: giant
Model: giant

נסו בעצמכם

import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier

# שורה אחת לכל כוכב: טמפרטורה באלפי קלווין, גודל (ערך קטן יותר פירושו כוכב בהיר יותר), ננס או ענק
stars = pd.read_csv("stars.csv")
X = stars[["temp_kK", "magnitude"]]
y = stars["type"]

# הכוכב החדש, ו-k
temp = float(input())
mag = float(input())
k = int(input())
new_star = pd.DataFrame({"temp_kK": [temp], "magnitude": [mag]})

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

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

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

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