All challenges
Easy 0 solved 0% acceptance

Min-Max Normalization

Rescale a feature so its smallest value becomes 0 and its largest becomes 1.

What you'll learn

  • Rescale values to the 0-1 range
  • Handle a feature where all values are equal
  • Prepare data for training

Problem

Features measured on different scales (age in years, income in dollars) confuse many models. Min-max normalization rescales a feature to the range 0 to 1:

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

If all values are equal (max = min), return 0 for every value.

Implement min_max_normalize(values).

Input

values: The values of one feature.

Output

Return the normalized values in the same order.

Constraints

1 ≤ length ≤ 10,000

-1,000,000 ≤ each value ≤ 1,000,000

Examples

Example 1
Input:
values = [10.0, 20.0, 15.0, 30.0]

Expected output:
expected = [0.0, 0.5, 0.25, 1.0]
Input:
std::vector<double> values = {10.0, 20.0, 15.0, 30.0};

Expected output:
std::vector<double> expected = {0.0, 0.5, 0.25, 1.0};
Input:
double[] values = new double[] {10.0, 20.0, 15.0, 30.0};

Expected output:
double[] expected = new double[] {0.0, 0.5, 0.25, 1.0};

Explanation

min = 10 and max = 30, so the range is 20: (10 - 10) / 20 = 0, (20 - 10) / 20 = 0.5, (15 - 10) / 20 = 0.25 and (30 - 10) / 20 = 1.

Example 2
Input:
values = [5.0, 5.0, 5.0]

Expected output:
expected = [0.0, 0.0, 0.0]
Input:
std::vector<double> values = {5.0, 5.0, 5.0};

Expected output:
std::vector<double> expected = {0.0, 0.0, 0.0};
Input:
double[] values = new double[] {5.0, 5.0, 5.0};

Expected output:
double[] expected = new double[] {0.0, 0.0, 0.0};

Explanation

All values are equal, so the range is 0 and every value becomes 0.

References

This challenge is adapted for CodeUtility. Follow the statement and constraints above.

Learn from others

Community solutions

No published solutions yet. Solve this challenge to share the first one.