Chuẩn hoá min-max theo từng cột bằng NumPy
Chuẩn hoá min-max đưa mọi cột về đoạn [0, 1] để các đặc trưng có đơn vị khác nhau
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, numpy-axis-reduction.
Nội dung đề bài
Mô tả bài toán
Chuẩn hoá min-max đưa mọi cột về đoạn [0, 1] để các đặc trưng có đơn vị khác nhau so sánh được với nhau. Đây là bước tiền xử lý đầu tiên trong gần như mọi pipeline học máy, và NumPy làm được bằng broadcasting.
Yêu cầu
Viết hàm normalize_columns(matrix) nhận ma trận hai chiều và trả về ma trận cùng kích thước, trong đó mỗi cột được biến đổi theo công thức (x - min_cot) / (max_cot - min_cot).
Quy ước nộp bài
Nộp hàm normalize_columns trong solution.py. Hệ thống gọi hàm trực tiếp, so giá trị với sai số 1e-6 và kiểm tra cả ngoại lệ ValueError; không dùng stdin/stdout.
Input
- matrix: mảng hai chiều, mọi hàng cùng số cột, phần tử là số thực.
Output
Ma trận đã chuẩn hoá, cùng số hàng và số cột với đầu vào, mọi giá trị nằm trong [0, 1].
Ràng buộc
- Số hàng và số cột từ 1 đến 50.
- Nếu một cột có mọi giá trị bằng nhau thì phép chia không xác định; khi đó hàm phải
ném ValueError thay vì trả về giá trị rác.
Ví dụ 1
Input
normalize_columns(matrix=[[1, 10], [3, 20]])
Output
[[0.0, 0.0], [1.0, 1.0]]
Ví dụ 2
Input
normalize_columns(matrix=[[0, 5], [5, 15], [10, 25]])
Output
[[0.0, 0.0], [0.5, 0.5], [1.0, 1.0]]
Giải thích
Với matrix = [[1, 10], [3, 20]], cột đầu có min 1 max 3 nên nhận [0, 1]; cột sau có min 10 max 20 nên nhận [0, 1]. Kết quả là [[0, 0], [1, 1]].
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.
