PyTorch z-score 标准分数 归一化处理

PyTorch z-score 标准分数 归一化处理

import torch
import matplotlib.pyplot as plt
import matplotlib as mpl

# randint方法产生2维并且每个维度20个数据
# 数据范围在1-10(不含10)
data1 = torch.randint(1, 10,(2,20)).float()
print(data1)
# 进行Z-SCORE归一化处理
data2 = (data1 - data1.mean()) / data1.std()
print(data2)
# 对标准化后的数据进行可视化处理
#plt.plot(data1[0].numpy(),data1[1].numpy(),"r.")

# 解决plt 画图中文不显示问题
mpl.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体为黑体
mpl.rcParams['axes.unicode_minus'] = False  # 正常显示负号

# 显示图像
# plt.subplot(nrows, ncols, index)
# 表示在当前画布的右上角创建一个1行2列的绘图区域,同时 选择在第 1 个位置绘制子图。
plt.subplot(1, 2, 1)
#plt.xticks([]), plt.yticks([])  # 隐藏x和y轴
plt.plot(data1[0].numpy(),data1[1].numpy(),"g.")
plt.title('原数据')

plt.subplot(1, 2, 2)
#plt.xticks([]), plt.yticks([])  # 隐藏x和y轴
plt.plot(data2[0].numpy(),data2[1].numpy(),"r.")
plt.title('Z-SCORE')
tensor([[4., 2., 2., 1., 2., 3., 8., 6., 1., 4., 2., 4., 3., 8., 4., 8., 5., 3.,
         8., 8.],
        [4., 7., 9., 4., 5., 9., 1., 6., 2., 8., 1., 5., 7., 9., 2., 7., 6., 5.,
         8., 9.]])
tensor([[-0.3746, -1.1237, -1.1237, -1.4982, -1.1237, -0.7491,  1.1237,  0.3746,
         -1.4982, -0.3746, -1.1237, -0.3746, -0.7491,  1.1237, -0.3746,  1.1237,
          0.0000, -0.7491,  1.1237,  1.1237],
        [-0.3746,  0.7491,  1.4982, -0.3746,  0.0000,  1.4982, -1.4982,  0.3746,
         -1.1237,  1.1237, -1.4982,  0.0000,  0.7491,  1.4982, -1.1237,  0.7491,
          0.3746,  0.0000,  1.1237,  1.4982]])

z分数能够真实的反应一个分数距离平均数的相对标准距离。如果我们把每一个分数都转换成z分数,那么每一个z分数会以标准差为单位表示一个具体分数到平均数的距离或离差。

式中:
X:原始数据。

:平均数。

S: 标准差。

发表回复

您的电子邮箱地址不会被公开。