Python实现数据(0,1)标准化归一化详解
本文详解Python中数据归一化的(0,1)标准化方法。通过将数据压缩至0到1区间,消除量纲影响。文中提供基于NumPy的公式实现代码,并展示使用Matplotlib绘制处理前后散点图的对比过程,验证数据范围转换效果,适用于机器学习数据预处理场景。
在机器学习的数据预处理阶段,经常需要对原始数据进行归一化处理。本文主要介绍(0,1)标准化这一常用方法,其核心功能是将预处理数据的数值范围按比例“压缩”到0到1的区间内。
通常,(0,1)标准化的计算公式如下所示:

具体原理是将样本点的数值减去该维度的最小值,然后除以最大值与最小值的差。这一基础公式旨在实现数据的线性缩放。
接下来,我们使用Python语言编写代码来实现这一过程。
import numpy as np
import matplotlib.pyplot as plt
def noramlization(data):
minVals = data.min(0)
maxVals = data.max(0)
ranges = maxVals - minVals
normData = np.zeros(np.shape(data))
m = data.shape[0]
normData = data - np.tile(minVals, (m, 1))
normData = normData/np.tile(ranges, (m, 1))
return normData, ranges, minVals
x = np.array([[78434.0829, 26829.86612], [78960.4042, 26855.13451], [72997.8308, 26543.79201],
[74160.2849, 26499.56629], [75908.5746, 26220.11996], [74880.6989, 26196.03995],
[74604.7169, 27096.87862], [79547.6796, 25986.68579], [74997.7791, 24021.50132],
[74487.4915, 26040.18441], [77134.2636, 24647.274], [74975.2792, 24067.31441],
[76013.5305, 24566.02273], [79191.518, 26840.29867], [80653.4589, 25937.22248],
[79185.9935, 26996.18228], [74426.881, 24227.71439], [73246.4295, 26561.59268],
[77963.1478, 25580.05298], [74469.8778, 26082.15448], [81372.3787, 26649.69232],
[76826.8262, 24549.77367], [77774.2608, 25999.96037], [79673.1361, 25229.04353],
[75251.7951, 24902.72185], [78458.073, 23924.15117], [82247.5439, 29671.33493],
[82041.2247, 27903.34268], [80083.2029, 28692.35517], [80962.0043, 28519.81002],
[79799.8328, 28740.27736], [80743.9947, 28862.75402], [80888.449, 29724.53706],
[81768.4638, 30180.20618], [80283.8783, 30417.55057], [79460.7078, 29092.52867],
[75514.1202, 28071.73721], [80595.5945, 30292.25917], [80750.4876, 29651.32254],
[80020.662, 30023.70025], [82992.3395, 29466.83067], [80185.5946, 29943.15481],
[81854.6163, 29846.18257], [81526.4017, 30218.27078], [79174.5312, 29960.69999],
[78112.3051, 26467.57545], [80262.4121, 29340.23218], [81284.9734, 28257.71529],
[81928.9905, 28752.84811], [80739.2727, 29288.85126], [83135.3435, 30223.4974],
[83131.8223, 29049.10112], [82549.9076, 28910.15209], [81574.0822, 28326.55367],
[80507.399, 28553.56851], [82956.2103, 29157.62372], [81909.7132, 29359.24497],
[80893.5603, 29326.64155], [82520.1272, 30424.96703], [82829.8548, 31062.24418],
[80532.1495, 29198.10407], [80112.7963, 29143.47905], [81175.0882, 28443.10574]])
newgroup, _, _ = noramlization(x)
newdata = newgroup
plt.scatter(x[:, 0], x[:, 1], marker='*', c='r', s=24)
plt.show()
print(len(x[:, 0]))
print(len(x[:, 1]))
print(newdata)
完成数据归一化处理后,利用matplotlib库绘制处理后的散点图,以直观展示数据的分布情况:

从生成的散点图中可以观察到,所有数据的数值范围均已成功映射到0到1之间。
以上内容即为本文的全部介绍,希望能为读者的学习提供有益帮助,同时也欢迎大家继续支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













