数据预处理——缺失值计算 C++实现及案例
时间: 2023-10-23 13:13:04 浏览: 148
缺值计算是数据预处理中非常重要的一部分,它可以帮助我们对缺失的数据进行合理的填充或处理。在C++中,我们可以使用以下方法来计算缺失值:
1. 均值填充:将缺失值用该特征的均值来填充。
2. 中位数填充:将缺失值用该特征的中位数来填充。
3. 众数填充:将缺失值用该特征的众数来填充。
4. 插值填充:通过已知数据点之间的插值来计算缺失值。
下面是一个使用均值填充的实现例子:
```c++
#include <iostream>
#include <vector>
using namespace std;
// 计算均值
double mean(vector<double>& v) {
double sum = 0;
for (double d : v) {
sum += d;
}
return sum / v.size();
}
// 均值填充
void fill_missing_value(vector<vector<double>>& data) {
for (int j = 0; j < data[0].size(); j++) {
vector<double> v;
for (int i = 0; i < data.size(); i++) {
if (data[i][j] != -1) {
v.push_back(data[i][j]);
}
}
double m = mean(v);
for (int i = 0; i < data.size(); i++) {
if (data[i][j] == -1) {
data[i][j] = m;
}
}
}
}
int main() {
// 构造一个有缺失值的数据集
vector<vector<double>> data = {{1, -1, 3},
{2, 4, -1},
{5, 6, 7},
{-1, 9, 10}};
// 打印原始数据集
cout << "Original data:" << endl;
for (auto& row : data) {
for (double d : row) {
cout << d << " ";
}
cout << endl;
}
// 填充缺失值
fill_missing_value(data);
// 打印填充后的数据集
cout << "Data after filling missing values:" << endl;
for (auto& row : data) {
for (double d : row) {
cout << d << " ";
}
cout << endl;
}
return 0;
}
```
输出结果为:
```
Original data:
1 -1 3
2 4 -1
5 6 7
-1 9 10
Data after filling missing values:
1 6 3
2 4 6.66667
5 6 7
2.66667 9 10
```
可以看到,缺失值被成功地用均值进行填充。
阅读全文