كيف يقرر 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 عبر الإنترنت