标准化和归一化是两种常用的数据预处理技术。它们用于将数据缩放到一个特定的范围,以提高机器学习模型的性能。
1. 标准化 (Standardization)
标准化将数据转换为均值为0,标准差为1的分布。公式如下:
其中:
是标准化后的值
-
是原始值
是原始数据的均值
是原始数据的标准差
from sklearn.preprocessing import StandardScaler def test(): # 准备数据 data = [ [5, 20, 10, 8], [10, 30, 15, 12], [7, 25, 13, 10] ] # 初始化标准化对象 standard = StandardScaler() # 对原始特征进行标准化变换 standardized_data = standard.fit_transform(data) # 打印标准化后的结果 print(standardized_data) # 调用函数进行测试 test()
[[-1.13554995 -1.22474487 -1.29777137 -1.22474487]
[ 1.29777137 1.22474487 1.13554995 1.22474487]
[-0.16222142 0. 0.16222142 0. ]]
2. 归一化 (Normalization)
归一化将数据缩放到一个特定的范围(通常是0到1)。常用的归一化方法是最小-最大归一化,公式如下:
其中:
是归一化后的值
是原始值
是数据集中最小值
是数据集中最大值
from sklearn.preprocessing import MinMaxScaler def test(): # 准备数据 data = [ [5, 20, 10, 8], [10, 30, 15, 12], [7, 25, 13, 10] ] # 初始化归一化对象 scaler = MinMaxScaler() # 对原始特征进行归一化变换 normalized_data = scaler.fit_transform(data) # 打印归一化后的结果 print(normalized_data) # 调用函数进行测试 test()
[[0. 0. 0. 0. ]
[1. 1. 1. 1. ]
[0.4 0.5 0.6 0.5]]
这两种技术的选择取决于具体的应用场景和数据的特性。标准化通常适用于数据符合正态分布的情况,而归一化更适合于数据的范围有显著差异时。