(3-3-03)数据标准化与归一化

3.3.4  “最小-最大”缩放

当进行"最小-最大"缩放(Min-Max Scaling)时,你将数据缩放到一个特定的范围,通常是0到1。这个缩放方法的公式如下:

其中 x 是原始数据,

 ​是缩放后的数据。这样做的结果是,原始数据中的最小值将映射到缩放后的范围的0,而最大值将映射到1,其它值将映射到两者之间的适当位置。

"最小-最大"缩放在数据的特征值范围相差较大时非常有用,可以将特征值归一化到一个固定的范围,从而消除不同特征之间的量纲差异。这有助于某些机器学习算法更快地收敛,提高算法的稳定性和准确性。

注意:虽然上述公式描述了单个特征的缩放,但在实际应用中,会对整个数据集的每个特征应用相同的缩放操作。

当使用PyTorch进行数据预处理时,可以使用sklearn.preprocessing中的MinMaxScaler来实现“最小-最大”缩放,例如下面是一个完整的例子。

实例3-4使用PyTorch实现“最小-最大”缩放(源码路径:daima/3/suo.py)

实例文件suo.py的具体实现代码如下所示

import torch
import numpy as np
from sklearn.preprocessing import MinMaxScaler
# 创建一些示例数据
data = np.array([[1.0, 2.0],
                 [2.0, 3.0],
                 [3.0, 5.0]])

# 创建 MinMaxScaler 对象
scaler = MinMaxScaler(feature_range=(0, 1))

# 对数据进行拟合和转换
scaled_data = scaler.fit_transform(data)

# 将 NumPy 数组转换为 PyTorch 张量
tensor_data = torch.tensor(scaled_data, dtype=torch.float32)

print("原始数据:")
print(data)

print("缩放后的数据:")
print(tensor_data)

在这个示例中,首先创建了一个包含示例数据的NumPy数组。接下来,创建了一个MinMaxScaler对象,指定feature_range=(0, 1)以进行“最小-最大”缩放。我们使用fit_transform方法将数据进行拟合和转换,得到缩放后的数据。最后,将缩放后的NumPy数组转换为PyTorch张量并打印出来。执行后会输出:

原始数据:
[[1. 2.]
 [2. 3.]
 [3. 5.]]
缩放后的数据:
tensor([[0.0000, 0.0000],
        [0.5000, 0.3333],
        [1.0000, 1.0000]])

当使用TensorFlow进行数据预处理时,可以使用sklearn.preprocessing中的MinMaxScaler来实现“最小-最大”缩放功能,例如下面的例子演示了这一用法。

实例3-4使用PyTorch实现“最小-最大”缩放(源码路径:daima/3/tsuo.py)

实例文件tsuo.py的具体实现代码如下所示

import tensorflow as tf
import numpy as np
from sklearn.preprocessing import MinMaxScaler

# 创建一些示例数据
data = np.array([[1.0, 2.0],
                 [2.0, 3.0],
                 [3.0, 5.0]])

# 创建 MinMaxScaler 对象
scaler = MinMaxScaler(feature_range=(0, 1))

# 对数据进行拟合和转换
scaled_data = scaler.fit_transform(data)

# 将 NumPy 数组转换为 TensorFlow 张量
tensor_data = tf.convert_to_tensor(scaled_data, dtype=tf.float32)

print("原始数据:")
print(data)

print("缩放后的数据:")
print(tensor_data)

在这个例子中,首先创建了一个包含示例数据的NumPy数组。接下来,我们创建了一个MinMaxScaler对象,指定feature_range=(0, 1)以进行“最小-最大”缩放。使用fit_transform方法将数据进行拟合和转换,得到缩放后的数据。最后,将缩放后的NumPy数组转换为TensorFlow张量并打印出来。执行后会看到原始数据和经过“最小-最大”缩放后的数据

原始数据:
[[1. 2.]
 [2. 3.]
 [3. 5.]]
缩放后的数据:
tf.Tensor(
[[0.         0.        ]
 [0.5        0.33333334]
 [1.         1.        ]], shape=(3, 2), dtype=float32)

你可能感兴趣的:(大模型从入门到实战,机器学习,深度学习,人工智能,python)