题目背景
在机器学习中,对数据进行归一化处理是一种常用的技术。
将数据从各种各样分布调整为平均值为、方差为
的标准分布,在很多情况下都可以有效的加速模型的训练。
问题描述
这里假定需要处理的数据为个整数
这组数据的平均值:
方差:
使用如下函数处理所有数据,得到的个浮点数
即满足平均值为
且方差为
:
输入格式
从标准输入读入数据
第一行包含一个整数,表示待处理的整数个数
第二行包含空格分隔的个整数,依次表示
输出格式
输出到标准输出
输出共行,每行一个浮点数,依次表示按上述方法归一化处理后的数据
样例输入
7-4 293 0 -22 12 654 1000
样例输出
-0.74855103790736130.04504284674812264-0.7378629047806881-0.7966476369773906-0.70579850540066861.00964686143037751.9341703768876082
样例解释
平均值:
方差:
标准差:
子任务
全部的测试数据保证,其中
表示
的绝对值
且输入的个整数
满足:方差
求解
#include <stdio.h>#include <math.h>int main() {int n;scanf("%d\n", &n);double value[n];double average = 0;int i;for (i = 0; i < n; i++) {scanf("%lf", &value[i]);average += value[i];}average /= n;double variance = 0;for (i = 0; i < n; i++) {variance += pow(value[i] - average, 2);}variance /= (double)n;double standard_deviation = sqrt(variance);for (i = 0; i < n; i++) {double result;result = (value[i] - average) / standard_deviation;printf("%lf\n", result);}return 0;}
