赞
踩
先说结果!之前一直用MinMaxScaler 进行归一化,最近才发现之前理解错了MinMaxScaler 的作用,MinMaxScaler只能对每一列分别进行归一化,即使将全部数据集的所有列都输入给MinMaxScaler,其归一化的结果也是对每列进行归一化。要想对整个数据集进行归一化可以将所有数据展平为一维输入给MinMaxScaler ,最后再重构形状。
MinMaxScaler 是一种数据预处理工具,用于将数据缩放到一个指定的范围内,通常是 [0, 1] 或者 [-1, 1]。它的工作原理是通过对每个特征进行线性变换,将其映射到指定的范围内。
具体来说,MinMaxScaler 的操作步骤如下:
1.对于每个特征,找到最小值(min)和最大值(max)。
2.对于每个特征,将它们的值进行线性变换,使得最小值变成了指定范围的最小值,最大值变成了指定范围的最大值。
具体的变换公式为:
X s c a l e d = X − X m i n X m a x − X m i n {X_{scaled}=\frac{X-X_{min}}{X_{max}-X_{min}} } Xscaled=Xmax−XminX−Xmin
X m i n {X_{min}} Xmin, X m a x {X_{max}} Xmax分别是特征的最小值和最大值, X {X} X 是特征的原始值, X s c a l e d {X_{scaled}} Xscaled是缩放后的值。
1. 对每列数据分别进行归一化
from sklearn.preprocessing import MinMaxScaler import numpy as np # 假设有两列数据 data = np.array([[1, 2], [3, 4], [5, 6]]) # 创建一个 MinMaxScaler 对象 scaler = MinMaxScaler() # 将所有数据输入给MinMaxScaler进行归一化 normalized_data = scaler.fit_transform(data) print("原始数据:") print(data) print("\n归一化后的数据:") print(normalized_data)
输出的结果如下:(显而易见,这是对每列数据分别进行了归一化)
原始数据:
[[1 2]
[3 4]
[5 6]]
归一化后的数据:
[[0. 0. ]
[0.5 0.5]
[1. 1. ]]
2. 对整个数据集进行归一化
from sklearn.preprocessing import MinMaxScaler import numpy as np # 假设有两列数据 data = np.array([[1, 2], [3, 4], [5, 6]]) # 将多列数据合并成一个列 flattened_data = data.flatten() # 创建一个 MinMaxScaler 对象 scaler = MinMaxScaler() # 对整个数据集进行归一化 normalized_data = scaler.fit_transform(flattened_data.reshape(-1, 1)) # 将归一化后的数据重新转换成原来的形状 normalized_data = normalized_data.reshape(data.shape) print("原始数据:") print(data) print("\n归一化后的数据:") print(normalized_data)
输出的结果如下:(显而易见,这是对整个数据集进行了归一化)
原始数据:
[[1 2]
[3 4]
[5 6]]
归一化后的数据:
[[0. 0.2]
[0.4 0.6]
[0.8 1. ]]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。