MinMaxScaler归一化,对每列数据进行归一化

先说结果!之前一直用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=XmaxXminXXmin

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. ]]
  • 32
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用`sklearn.preprocessing`库中的`MinMaxScaler`类可以实现数据归一化和反归一化。下面是一个示例代码: 归一化代码: ```python from sklearn.preprocessing import MinMaxScaler import numpy as np # 假设有一个数据集 X,需要进行归一化 X = np.array([[1, 2], [3, 4], [5, 6]]) # 实例化一个 MinMaxScaler 对象 scaler = MinMaxScaler() # 对数据集 X 进行归一化 X_norm = scaler.fit_transform(X) # 输出归一化后的结果 print(X_norm) ``` 反归一化代码: ```python from sklearn.preprocessing import MinMaxScaler import numpy as np # 假设有一个归一化后的数据集 X_norm,需要进行归一化 X_norm = np.array([[0, 0], [0.5, 0.5], [1, 1]]) # 实例化一个 MinMaxScaler 对象 scaler = MinMaxScaler() # 对归一化后的数据 X_norm 进行归一化 X_denorm = scaler.inverse_transform(X_norm) # 输出反归一化后的结果 print(X_denorm) ``` 在归一化代码中,首先将原始数据集`X`转化为`numpy`数组,然后实例化一个`MinMaxScaler`对象,调用`fit_transform`方法对数据进行归一化,最后输出归一化后的结果。 在反归一化代码中,首先将归一化后的数据集`X_norm`转化为`numpy`数组,然后实例化一个`MinMaxScaler`对象,调用`inverse_transform`方法对数据进行归一化,最后输出反归一化后的结果。 需要注意的是,反归一化时的`MinMaxScaler`对象必须是使用相同的参数进行实例化的,否则反归一化的结果可能不正确。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值