איך k-NN מקבל החלטות
חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 6 מתוך 58.
הפרק הזה פותח את k-NN. בסופו תשרטטו את המפה שלו לכל נתונים, כמו זו של פלפלי צ'ילי עדינים וחריפים:
כדי לסווג פלפל צ'ילי חדש, שכנים קרובים ביותר מוצאים את k פלפלי הצ'ילי באימון הקרובים אליו ביותר, והם מצביעים:
הקרוב ביותר פירושו המרחק הקטן ביותר, זה שפגשת ביחידה 2. בוחרים k:
model = KNeighborsClassifier(n_neighbors=5)n_neighbors הוא k, שערכו 5 אלא אם מציינים אחרת. כשיש שתי מחלקות, k אי-זוגי לעולם לא יוביל לתיקו.
אתגר
קלמועדון אסטרונומיה ממיין את הכוכבים שבקובץ stars.csv לננסים ולענקים לפי הטמפרטורה והבהירות. קוד הפתיחה קורא נתונים של כוכב חדש ושל k.
- מצאו ידנית את k הכוכבים הקרובים ביותר: הוסיפו עמודת
distance, ואז מיינו. - הדפיסו כמה מהם ענקים, ואז מי קיבל את רוב הקולות.
- בדקו באמצעות מודל 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]})
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה מונחית
תרגלו בעצמכם: קומפיילר Python אונליין