Mã hoá one-hot cho một cột nhãn rời rạc bằng pandas
Mô hình học máy chỉ tính toán trên số, nên cột nhãn dạng chữ như "cat" hay "dog"
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ủ đề
Kiến thức tiên quyết: python-basics, python-dicts.
Nội dung đề bài
Mô tả bài toán
Mô hình học máy chỉ tính toán trên số, nên cột nhãn dạng chữ như "cat" hay "dog" phải được chuyển thành các cột 0/1. Cách mã hoá one-hot tạo một cột cho mỗi hạng mục và bật đúng một cột trên mỗi dòng. Bài này luyện đúng bước biến đổi đó.
Yêu cầu
Viết hàm one_hot_encode(labels) trả về ma trận đã mã hoá dưới dạng danh sách các dòng, mỗi dòng là một danh sách số nguyên 0 hoặc 1. Thứ tự cột là thứ tự sắp xếp tăng dần của các hạng mục xuất hiện trong labels (so sánh theo giá trị, ví dụ ["bird", "cat", "dog"]).
Quy ước nộp bài
Nộp hàm one_hot_encode trong solution.py. Hệ thống gọi hàm trực tiếp theo tên đối số và so cấu trúc trả về với kỳ vọng; không đọc dữ liệu từ stdin và không in ra stdout.
Input
- labels: danh sách nhãn rời rạc, mỗi phần tử là chuỗi hoặc số nguyên, từ 1 đến 20 phần tử.
Output
Danh sách gồm đúng len(labels) dòng; mỗi dòng có số phần tử bằng số hạng mục phân biệt và tổng mỗi dòng bằng 1.
Ràng buộc
- Cột được sắp xếp tăng dần theo giá trị hạng mục, không theo thứ tự xuất hiện.
- Mỗi dòng dùng đúng một giá trị 1, các vị trí còn lại là 0.
- Trả về danh sách Python thuần, không trả về DataFrame hay mảng NumPy.
Ví dụ 1
Input
one_hot_encode(labels=["cat", "dog", "cat", "bird"])
Output
[[0, 1, 0], [0, 0, 1], [0, 1, 0], [1, 0, 0]]
Ví dụ 2
Input
one_hot_encode(labels=["b", "a"])
Output
[[0, 1], [1, 0]]
Giải thích
Với labels = ["cat", "dog", "cat", "bird"], ba hạng mục theo thứ tự sắp xếp là bird, cat, dog, nên kết quả là [[0, 1, 0], [0, 0, 1], [0, 1, 0], [1, 0, 0]].
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.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
