راه
۶ کیو· متوسطمتوسطPYTHON۴ ثانیه · ۲۵۶ مگابایت

طبقه‌بند KNN از صفر

تابع knn_predict(X_train, y_train, X_test, k) را بدون scikit-learn بنویسید. برای هر سطر X_test:

  1. فاصله‌ی اقلیدسی آن را با همه‌ی سطرهای X_train حساب کنید،
  2. k نزدیک‌ترین نمونه‌ی آموزش را پیدا کنید،
  3. و پرتکرارترین برچسب میان آن‌ها را پیش‌بینی کنید.

دو قاعده برای حالت‌های تساوی، تا جواب یکتا باشد:

  • اگر چند نمونه‌ی آموزش فاصله‌ی برابر داشتند، آن که در X_train زودتر آمده جلوتر است. np.argsort(..., kind="stable") همین کار را می‌کند.
  • اگر چند برچسب به یک اندازه تکرار شدند، کوچک‌ترین برچسب را انتخاب کنید.

X_train و X_test آرایه‌های دوبعدی‌اند، y_train آرایه‌ای از برچسب‌های صحیح و k یک عدد صحیح. خروجی، آرایه‌ای از برچسب‌های پیش‌بینی‌شده است، یکی برای هر سطر X_test.

python
X_train = np.array([[0, 0], [1, 0], [5, 5], [6, 5]])
y_train = np.array([0, 0, 1, 1])
knn_predict(X_train, y_train, np.array([[0.4, 0.2], [5.2, 4.9]]), 1)   # → [0, 1]

نمونه‌ها

ورودی نمونه ۱
[[[0, 0], [1, 0], [5, 5], [6, 5]], [0, 0, 1, 1], [[0.4, 0.2], [5.2, 4.9]], 1]
خروجی نمونه ۱
[0, 1]
ورودی نمونه ۲
[[[0, 0], [0, 1], [1, 0], [5, 5], [5, 6]], [0, 0, 0, 1, 1], [[2.5, 2.5], [4, 4], [0, 0.5]], 3]
خروجی نمونه ۲
[0, 1, 0]

برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.

ورود