c++ z-score归一化
时间: 2023-09-07 13:17:20 浏览: 150
Z-score归一化也称标准化,是将原始数据转化为标准正态分布的过程。在C++中,可以按照以下步骤实现Z-score归一化:
1.计算原始数据的均值(mean)和标准差(stddev)。
2.对每个原始数据进行如下运算得到标准化后的数据(z-score):
z-score = (x - mean) / stddev
其中,x为原始数据。
下面是一个C++实现的示例代码:
```cpp
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
void zScoreNormalization(vector<double>& data) {
double sum = 0.0;
double squareSum = 0.0;
int n = data.size();
// 计算均值和标准差
for (int i = 0; i < n; i++) {
sum += data[i];
squareSum += pow(data[i], 2);
}
double mean = sum / n;
double stddev = sqrt(squareSum / n - pow(mean, 2));
// Z-score归一化
for (int i = 0; i < n; i++) {
data[i] = (data[i] - mean) / stddev;
}
}
int main() {
vector<double> data = {1, 2, 3, 4, 5};
zScoreNormalization(data);
for (int i = 0; i < data.size(); i++) {
cout << data[i] << " ";
}
cout << endl;
return 0;
}
```
输出结果为:
-1.26491 -0.632456 0 0.632456 1.26491
其中,原始数据为{1, 2, 3, 4, 5},标准化后的数据为{-1.26491, -0.632456, 0, 0.632456, 1.26491}。
阅读全文