STANAANDREY

zscore

Nov 14th, 2025
312
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.02 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <numeric>
  4. #include <cmath>
  5.  
  6. using VecD = std::vector<double>;
  7.  
  8. double getMean(const VecD& data) {
  9.     return std::accumulate(data.cbegin(), data.cend(), 0.0) / data.size();
  10. }
  11.  
  12. double getVariance(const VecD& data, double meanVal) {
  13.     double sum = 0.0;
  14.     for (double x : data) {
  15.         sum += std::pow(meanVal - x, 2);
  16.     }
  17.     return sum / data.size();
  18. }
  19.  
  20. double getStdDev(const VecD& data, double meanVal) {
  21.     return sqrt(getVariance(data, meanVal));
  22. }
  23.  
  24. VecD zScoreNormalize(const VecD& data) {
  25.     double meanVal = getMean(data);
  26.     double stdDev = getStdDev(data, meanVal);
  27.     VecD normalizedData(data.size());
  28.     for (size_t i = 0; i < data.size(); i++) {
  29.         normalizedData[i] = (data[i] - meanVal) / stdDev;
  30.     }
  31.     return normalizedData;
  32. }
  33.  
  34. int main() {
  35.     VecD v = {50, 60, 70, 80, 90, 600};
  36.     auto ans = zScoreNormalize(v);
  37.     for (double x : ans) {
  38.         std::cout << x << ' ';
  39.     }
  40.     std::cout << std::endl;
  41.     return 0;
  42. }
  43.  
Advertisement
Add Comment
Please, Sign In to add comment