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’,其公式为:
新数据=(原数据-最小值)/(最大值-最小值)