
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: 标准差。