۶ کیو· متوسطمتوسطPYTHON۴ ثانیه · ۲۵۶ مگابایت
طبقهبند KNN از صفر
تابع knn_predict(X_train, y_train, X_test, k) را بدون scikit-learn بنویسید. برای هر سطر X_test:
- فاصلهی اقلیدسی آن را با همهی سطرهای
X_trainحساب کنید، kنزدیکترین نمونهی آموزش را پیدا کنید،- و پرتکرارترین برچسب میان آنها را پیشبینی کنید.
دو قاعده برای حالتهای تساوی، تا جواب یکتا باشد:
- اگر چند نمونهی آموزش فاصلهی برابر داشتند، آن که در
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]
برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.
ورود