c语言编程实现“min - max标准化”,输入一组整型数据,将其进行标准化后输出,需注意类型转换。
时间: 2024-09-24 13:10:31 浏览: 122
在C语言中,"min-max标准化"也叫z-score标准化,是一种常见的数据预处理技术,用于将数值转化为均值为0、标准差为1的标准正态分布。其公式为:
\[ z = \frac{x - \mu}{\sigma} \]
其中,\( x \) 是原始数据点,\( \mu \) 是这组数据的平均值(min),\( \sigma \) 是数据的标准差(max减去min)。
以下是C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
double min_max_standardization(int *data, int size) {
double mean = *data; // 初始值设为第一个元素
double std_dev = data[1] - data[0]; // 首两个元素计算差作为std_dev
for (int i = 2; i < size; i++) {
mean += data[i];
std_dev = ((data[i] - mean) / size) + std_dev;
}
mean /= size;
// 标准化后的数据存储和返回
for (int i = 0; i < size; i++) {
data[i] = (data[i] - mean) / std_dev;
}
return data[size - 1]; // 返回最后一个元素作为样例输出
}
int main() {
int arr[] = {5, 10, 15, 20, 25};
int size = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
double normalized_data[size];
for (int i = 0; i < size; i++) {
normalized_data[i] = min_max_standardization(&arr[i], size);
}
printf("Normalized array: ");
for (int i = 0; i < size; i++) {
printf("%.2f ", normalized_data[i]); // 输出两位小数
}
printf("\n");
return 0;
}
```
这个程序首先计算数据集的平均值和标准差,然后对每个数据点进行标准化操作,并输出标准化后的结果。
阅读全文