试编程,输入一组整型数据,并将这些数据进行 min-max 标准化后输出
时间: 2024-10-04 12:03:40 浏览: 27
当我们对一组整型数据进行 min-max 标准化(也称为最小-最大缩放或范围归一化)时,我们首先计算这组数据中的最小值(min)和最大值(max),然后将每个数值转换为介于0和1之间的新值。这个过程可以通过以下公式完成:
原始值(x)经过标准化后的值(scaled_x)= (x - min) / (max - min)
其中 `min` 是数据集中的最小值,`max` 是数据集中的最大值。
这是一个简单的 C++ 程序示例,用来演示如何完成这个操作:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 函数用于获取数组的最小值和最大值
pair<int, int> getMinMax(const vector<int>& data) {
int min_val = *data.begin();
int max_val = *data.begin();
for (int value : data) {
if (value < min_val) {
min_val = value;
} else if (value > max_val) {
max_val = value;
}
}
return {min_val, max_val};
}
// 函数进行 min-max 标准化并打印结果
void normalizeAndPrint(const vector<int>& data) {
pair<int, int> range = getMinMax(data);
for (int x : data) {
double scaled_x = static_cast<double>(x - range.first) / (range.second - range.first);
// 注意:由于 C++ 不支持浮点数的精确表示,可能会有很小的舍入误差
cout << fixed << setprecision(6) << scaled_x << " ";
}
cout << endl;
}
int main() {
vector<int> input_data; // 假设这里是你输入的数据
// 读取数据并添加到 input_data 中
normalizeAndPrint(input_data);
return 0;
}
```
在这个程序中,我们首先定义了一个辅助函数 `getMinMax` 来找到输入数据的最小值和最大值。然后,在 `normalizeAndPrint` 函数中,我们遍历输入数据并对每个元素应用 min-max 标准化公式。最后,在 `main` 函数中,你需要提供实际的输入数据并调用上述函数。
使用此程序前,请确保已将 `input_data` 初始化为包含整数的一组数据。
阅读全文