
import torch
import matplotlib.pyplot as plt
import matplotlib as mpl
# randint方法产生2维并且每个维度20个数据
data1 = torch.randint(1, 10,(2,20)).float()
print(data1)
# 进行Z-SCORE归一化处理
data2 = (data1 - data1.mean()) / data1.std()
print(data2)
# Min-Max归一化处理
data3 = (data1 - data1.min()) /(data1.max()-data1.min())
print(data3)
# 对标准化后的数据进行可视化处理
#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行3列的绘图区域,同时 选择在第 1 个位置绘制子图。
plt.subplot(1, 3, 1)
#plt.xticks([]), plt.yticks([]) # 隐藏x和y轴
plt.plot(data1[0].numpy(),data1[1].numpy(),"g.")
plt.title('原数据')
plt.subplot(1, 3, 2)
#plt.xticks([]), plt.yticks([]) # 隐藏x和y轴
plt.plot(data2[0].numpy(),data2[1].numpy(),"r.")
plt.title('Z-SCORE')
plt.subplot(1, 3, 3)
#plt.xticks([]), plt.yticks([]) # 隐藏x和y轴
plt.plot(data3[0].numpy(),data3[1].numpy(),"b.")
plt.title('Min-Max')
tensor([[5., 2., 8., 3., 5., 5., 6., 5., 6., 7., 7., 3., 9., 5., 7., 6., 8., 3.,
6., 7.],
[9., 5., 7., 5., 4., 6., 5., 7., 9., 3., 6., 3., 9., 3., 8., 1., 2., 2.,
3., 9.]])
tensor([[-0.2098, -1.5346, 1.1151, -1.0930, -0.2098, -0.2098, 0.2318, -0.2098,
0.2318, 0.6735, 0.6735, -1.0930, 1.5567, -0.2098, 0.6735, 0.2318,
1.1151, -1.0930, 0.2318, 0.6735],
[ 1.5567, -0.2098, 0.6735, -0.2098, -0.6514, 0.2318, -0.2098, 0.6735,
1.5567, -1.0930, 0.2318, -1.0930, 1.5567, -1.0930, 1.1151, -1.9762,
-1.5346, -1.5346, -1.0930, 1.5567]])
tensor([[0.5000, 0.1250, 0.8750, 0.2500, 0.5000, 0.5000, 0.6250, 0.5000, 0.6250,
0.7500, 0.7500, 0.2500, 1.0000, 0.5000, 0.7500, 0.6250, 0.8750, 0.2500,
0.6250, 0.7500],
[1.0000, 0.5000, 0.7500, 0.5000, 0.3750, 0.6250, 0.5000, 0.7500, 1.0000,
0.2500, 0.6250, 0.2500, 1.0000, 0.2500, 0.8750, 0.0000, 0.1250, 0.1250,
0.2500, 1.0000]])
min-max标准化方法是对原始数据进行线性变换。设minA和maxA分别为属性A的最小值和最大值,将A的一个原始值x通过min-max标准化映射成在区间[0,1]中的值x’,其公式为:
新数据=(原数据-最小值)/(最大值-最小值)