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

Chia dữ liệu thành tập huấn luyện và tập kiểm định theo tỉ lệ

Trước khi huấn luyện bất kỳ mô hình nào, dữ liệu phải được chia thành phần để học và

PythonCơ bản10 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-learningdata-splittingnumpyentry-ramp

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

Nội dung đề bài

Mô tả bài toán

Trước khi huấn luyện bất kỳ mô hình nào, dữ liệu phải được chia thành phần để học và phần để kiểm tra. Bài này luyện đúng một bước nhỏ nhất của quy trình đó: cắt một danh sách nhãn thành hai phần liên tiếp theo tỉ lệ cho trước, giữ nguyên thứ tự ban đầu.

Yêu cầu

Viết hàm train_valid_split(labels, train_ratio) trả về dict có hai khoá train và valid. Gọi n là số phần tử của labels và k = floor(n * train_ratio). Hàm phải trả train là k phần tử đầu và valid là n - k phần tử còn lại, đúng thứ tự như trong labels.

Quy ước nộp bài

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

Input

  • labels: danh sách nhãn (số nguyên hoặc chuỗi), từ 1 đến 20 phần tử.
  • train_ratio: số thực trong khoảng (0, 1), tỉ lệ mẫu dành cho tập huấn luyện.

Output

Dict {"train": [...], "valid": [...]} chứa hai danh sách con liên tiếp của labels, không trùng phần tử và không làm mất phần tử nào.

Ràng buộc

  • k được làm tròn xuống, không làm tròn lên và không làm tròn tới gần nhất.
  • Dữ liệu kiểm tra luôn cho 1 <= k <= n - 1, nên hai tập đều khác rỗng.
  • Không xáo trộn: thứ tự phần tử trong mỗi tập giữ nguyên như labels.

Ví dụ 1

Input

train_valid_split(labels=[10, 20, 30, 40], train_ratio=0.5)

Output

{"train": [10, 20], "valid": [30, 40]}

Ví dụ 2

Input

train_valid_split(labels=["a", "b", "c", "d", "e", "f", "g", "h"], train_ratio=0.75)

Output

{"train": ["a", "b", "c", "d", "e", "f"], "valid": ["g", "h"]}

Giải thích

Với labels = [10, 20, 30, 40] và train_ratio = 0.5 thì k = floor(4 * 0.5) = 2, nên kết quả là {"train": [10, 20], "valid": [30, 40]}.

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