python-280Đọc toàn bộ đề miễn phí

Dự đoán nhãn bằng bình chọn của k láng giềng gần nhất

K láng giềng gần nhất (k-NN) là mô hình học máy không cần huấn luyện: muốn dự đoán một

PythonCơ bản15 phút

Tiến độ của tôi ở bài này

Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

machine-learningk-nearest-neighboursnumpyentry-ramp

Kiến thức tiên quyết: python-basics, numpy-axis-reduction.

Nội dung đề bài

Mô tả bài toán

K láng giềng gần nhất (k-NN) là mô hình học máy không cần huấn luyện: muốn dự đoán một điểm mới, ta tìm k điểm gần nó nhất trong tập dữ liệu và cho chúng bình chọn. Bài này luyện đúng một bước dự đoán đó trên điểm dữ liệu hai chiều.

Yêu cầu

Viết hàm knn_predict(points, labels, query, k=3) trả về nhãn được bình chọn nhiều nhất trong số k điểm gần query nhất. Khoảng cách dùng là khoảng cách Euclid thông thường trong mặt phẳng. Nếu có nhiều nhãn cùng số phiếu cao nhất, trả về nhãn của điểm gần nhất.

Quy ước nộp bài

Nộp hàm knn_predict trong solution.py. Hệ thống gọi hàm trực tiếp theo tên đối số và so nhãn trả về; không đọc dữ liệu từ stdin và không in ra stdout.

Input

  • points: danh sách điểm, mỗi điểm là [x, y], từ 1 đến 20 điểm.
  • labels: danh sách nhãn, cùng độ dài với points.
  • query: một điểm [x, y] cần dự đoán nhãn.
  • k: số láng giềng được bình chọn, số nguyên dương không lớn hơn số điểm.

Output

Nhãn dự đoán cho query, lấy đúng từ danh sách labels (giữ nguyên kiểu dữ liệu).

Ràng buộc

  • Dữ liệu không có tình huống hòa phiếu, trừ quy tắc đã nêu ở phần Yêu cầu.
  • k phải được dùng đúng như đầu vào, không được cố định bằng 3.
  • Sắp xếp theo khoảng cách TĂNG dần trước khi lấy k điểm đầu.

Ví dụ 1

Input

knn_predict(points=[[0, 0], [1, 0], [2, 0], [3, 0]], labels=["A", "A", "B", "B"], query=[0.5, 0], k=3)

Output

"A"

Ví dụ 2

Input

knn_predict(points=[[0, 0], [5, 0], [6, 0]], labels=["X", "Y", "Y"], query=[5.5, 0], k=3)

Output

"Y"

Giải thích

Với points = [[0, 0], [1, 0], [2, 0], [3, 0]], labels = ["A", "A", "B", "B"], query = [0.5, 0] và k = 3: khoảng cách là 0.5, 0.5, 1.5, 2.5, nên ba láng giềng gần nhất có nhãn A, A, B và kết quả là "A".

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.

Nhóm Zalo