Menu
CoddyTech
flag Ar iconالعربيةdown icon

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