Đề bài
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ụ
Đầ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.
Đầ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.