All challenges
Easy 0 solved 0% acceptance

Z-Score Standardization

Center a feature at 0 and scale it to a standard deviation of 1.

What you'll learn

  • Compute the mean and standard deviation
  • Center and scale a feature
  • Handle zero variance

Problem

Standardization rescales a feature so it has mean 0 and standard deviation 1, which many models (and gradient descent) work best with:

z = (x - mean) / std

Use the population standard deviation: std = √(Σ(x - mean)² / n). If std is 0 (all values equal), return 0 for every value.

Implement z_scores(values).

Input

values: The values of one feature.

Output

Return the z-score of each value, in the same order.

Constraints

1 ≤ length ≤ 10,000

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

Examples

Example 1
Input:
values = [2.0, 4.0, 4.0, 4.0, 5.0, 5.0, 7.0, 9.0]

Expected output:
expected = [-1.5, -0.5, -0.5, -0.5, 0.0, 0.0, 1.0, 2.0]
Input:
std::vector<double> values = {2.0, 4.0, 4.0, 4.0, 5.0, 5.0, 7.0, 9.0};

Expected output:
std::vector<double> expected = {-1.5, -0.5, -0.5, -0.5, 0.0, 0.0, 1.0, 2.0};
Input:
double[] values = new double[] {2.0, 4.0, 4.0, 4.0, 5.0, 5.0, 7.0, 9.0};

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

Explanation

The mean is 40 / 8 = 5 and the population standard deviation is √(32 / 8) = 2, so 2 → (2 - 5) / 2 = -1.5, 4 → -0.5, 5 → 0, 7 → 1 and 9 → 2. Result: [-1.5, -0.5, -0.5, -0.5, 0, 0, 1, 2].

Example 2
Input:
values = [3.0, 3.0]

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

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

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

Explanation

Both values equal the mean, so the standard deviation is 0 and both z-scores are 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.