CCF CSP 202206-1 归一化处理 Python题解

题目背景

在机器学习中,对数据进行归一化处理是一种常用的技术。
将数据从各种各样分布调整为平均值为 、方差为 的标准分布,在很多情况下都可以有效地加速模型的训练。

问题描述
这里假定需要处理的数据为 个整数

这组数据的平均值:

方差:

使用如下函数处理所有数据,得到的 个浮点数
即满足平均值为 且方差为 :

输入格式
从标准输入读入数据。

第一行包含一个整数 ,表示待处理的整数个数。

第二行包含空格分隔的 个整数,依次表示

输出格式
输出到标准输出。

输出共 行,每行一个浮点数,依次表示按上述方法归一化处理后的数据

样例输入
7
-4 293 0 -22 12 654 1000
Data
样例输出
-0.7485510379073613
0.04504284674812264
-0.7378629047806881
-0.7966476369773906
-0.7057985054006686
1.0096468614303775
1.9341703768876082
Data
样例解释
平均值:

方差:

标准差:

子任务
全部的测试数据保证
,其中
表示
的绝对值。

且输入的 个整数
满足:方差 。

评分方式
如果你输出的每个浮点数与参考结果相比,均满足绝对误差不大于 ,则该测试点满分,否则不得分。

提示
C/C++:建议使用 double 类型存储浮点数,并使用 printf(“%f”, x);$$’ 进行输出。

Python:直接使用 print(x) 进行输出即可。

Java:建议使用 double 类型存储浮点数,可以使用 System.out.print(x); 进行输出。

题解

num = eval(input())
data = []
sum1 = 0
i = 0
for x in input().split():
    data.append(eval(x))
    sum1 += data[i]
    i += 1
averageValue = sum1/num
variance = 0
for i in range(0, num):
    variance += pow(data[i]-averageValue, 2)
variance /= num
for i in range(0, num):
    data[i] = (data[i] - averageValue)/pow(variance, 0.5)
for i in data:
    print(i)

你可能感兴趣的:(CCF,CSP,python,算法,开发语言)