Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Chuẩn hóa min-max

Co giãn một đặc trưng để giá trị nhỏ nhất thành 0 và lớn nhất thành 1.

Bạn sẽ học được gì

  • Co giãn giá trị về khoảng 0-1
  • Xử lý đặc trưng có mọi giá trị bằng nhau
  • Chuẩn bị dữ liệu cho huấn luyện

Đề bài

Xem bản gốc (English)

Các đặc trưng đo theo thang khác nhau (tuổi tính bằng năm, thu nhập tính bằng đô la) làm nhiều mô hình bị nhiễu. Chuẩn hóa min-max đưa một đặc trưng về khoảng 0 đến 1:

x' = (x - min) / (max - min)

Nếu mọi giá trị bằng nhau (max = min), trả về 0 cho mọi giá trị.

Hãy cài đặt min_max_normalize(values).

Đầu vào

values: Các giá trị của một đặc trưng.

Đầu ra

Trả về các giá trị đã chuẩn hóa theo đúng thứ tự.

Ràng buộc

1 ≤ độ dài ≤ 10.000

-1.000.000 ≤ mỗi giá trị ≤ 1.000.000

Ví dụ

Ví dụ 1
Đầu vào:
values = [10.0, 20.0, 15.0, 30.0]

Kết quả mong đợi:
expected = [0.0, 0.5, 0.25, 1.0]
Đầu vào:
std::vector<double> values = {10.0, 20.0, 15.0, 30.0};

Kết quả mong đợi:
std::vector<double> expected = {0.0, 0.5, 0.25, 1.0};
Đầu vào:
double[] values = new double[] {10.0, 20.0, 15.0, 30.0};

Kết quả mong đợi:
double[] expected = new double[] {0.0, 0.5, 0.25, 1.0};

Giải thích

min = 10 và max = 30, nên khoảng là 20: (10 - 10) / 20 = 0, (20 - 10) / 20 = 0.5, (15 - 10) / 20 = 0.25 và (30 - 10) / 20 = 1.

Ví dụ 2
Đầu vào:
values = [5.0, 5.0, 5.0]

Kết quả mong đợi:
expected = [0.0, 0.0, 0.0]
Đầu vào:
std::vector<double> values = {5.0, 5.0, 5.0};

Kết quả mong đợi:
std::vector<double> expected = {0.0, 0.0, 0.0};
Đầu vào:
double[] values = new double[] {5.0, 5.0, 5.0};

Kết quả mong đợi:
double[] expected = new double[] {0.0, 0.0, 0.0};

Giải thích

Mọi giá trị bằng nhau nên khoảng bằng 0 và mọi giá trị trở thành 0.

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.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.