Đề bài
Mô hình cần số chứ không phải chữ. Mã hóa one-hot biến mỗi danh mục thành một vector có một vị trí cho mỗi danh mục: số 1 ở vị trí của danh mục đó và 0 ở mọi vị trí khác.
Sắp xếp các danh mục theo bảng chữ cái. Với mỗi nhãn, xuất vector one-hot của nó.
Hãy cài đặt one_hot(labels).
Đầu vào
labels: Danh sách tên danh mục.
Đầu ra
Trả về ma trận có một hàng cho mỗi nhãn và một cột cho mỗi danh mục khác nhau (theo bảng chữ cái).
Ràng buộc
1 ≤ độ dài ≤ 1.000
Mỗi nhãn dài 1 đến 20 ký tự
Ví dụ
Đầu vào:
labels = ["red", "green", "blue", "green"]
Kết quả mong đợi:
expected = [
[0, 0, 1],
[0, 1, 0],
[1, 0, 0],
[0, 1, 0]
]
Đầu vào:
std::vector<std::string> labels = {"red", "green", "blue", "green"};
Kết quả mong đợi:
std::vector<std::vector<long long>> expected = {
{0, 0, 1},
{0, 1, 0},
{1, 0, 0},
{0, 1, 0}
};
Đầu vào:
string[] labels = new string[] {"red", "green", "blue", "green"};
Kết quả mong đợi:
long[][] expected = new long[][] {
new long[] {0, 0, 1},
new long[] {0, 1, 0},
new long[] {1, 0, 0},
new long[] {0, 1, 0}
};
Giải thích
Các danh mục theo bảng chữ cái là blue, green, red. Vậy red → [0, 0, 1], green → [0, 1, 0] và blue → [1, 0, 0].
Đầu vào:
labels = ["yes"]
Kết quả mong đợi:
expected = [
[1]
]
Đầu vào:
std::vector<std::string> labels = {"yes"};
Kết quả mong đợi:
std::vector<std::vector<long long>> expected = {
{1}
};
Đầu vào:
string[] labels = new string[] {"yes"};
Kết quả mong đợi:
long[][] expected = new long[][] {
new long[] {1}
};
Giải thích
Chỉ có một danh mục, nên mọi vector đều là [1].
Tham khảo
Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.