规范化和标准化数值数据的Python算法实现
发布时间:2023-12-24 16:14:31
在数据分析和机器学习领域,规范化(Normalization)和标准化(Standardization)是常用的预处理技术,用于将数值数据转换为统一的尺度,以便更好地进行比较和分析。下面将介绍规范化和标准化的概念以及其Python算法实现,并提供使用例子。
1. 规范化(Normalization):
规范化是将数值数据按比例缩放,使其值落入指定的范围内。常见的规范化方法包括Min-Max规范化和Z-score规范化。
(a) Min-Max规范化:
Min-Max规范化将数值数据线性缩放到[0,1]的范围内,公式为:
x' = (x - min(x)) / (max(x) - min(x))
其中,x'为缩放后的值,x为原始值,min(x)和max(x)分别为原始值的最小值和最大值。
(b) Z-score规范化:
Z-score规范化将数值数据转化成具有标准正态分布特征的数据,公式为:
x' = (x - mean(x)) / std(x)
其中,x'为标准化后的值,x为原始值,mean(x)和std(x)分别为原始值的均值和标准差。
下面是Python中规范化的实现代码:
import numpy as np
def min_max_normalization(data):
min_val = np.min(data)
max_val = np.max(data)
normalized_data = (data - min_val) / (max_val - min_val)
return normalized_data
def z_score_normalization(data):
mean_val = np.mean(data)
std_val = np.std(data)
normalized_data = (data - mean_val) / std_val
return normalized_data
使用例子:
data = np.array([1, 2, 3, 4, 5])
min_max_normalized_data = min_max_normalization(data)
z_score_normalized_data = z_score_normalization(data)
print("Min-Max normalized data:", min_max_normalized_data)
print("Z-score normalized data:", z_score_normalized_data)
输出结果:
Min-Max normalized data: [0. 0.25 0.5 0.75 1. ] Z-score normalized data: [-1.41421356 -0.70710678 0. 0.70710678 1.41421356]
2. 标准化(Standardization):
标准化是将数值数据转换为均值为0,方差为1的标准正态分布。常见的标准化方法是通过Z-score规范化实现的。
下面是Python中标准化的实现代码:
import numpy as np
def standardization(data):
mean_val = np.mean(data)
std_val = np.std(data)
standardized_data = (data - mean_val) / std_val
return standardized_data
使用例子:
data = np.array([1, 2, 3, 4, 5])
standardized_data = standardization(data)
print("Standardized data:", standardized_data)
输出结果:
Standardized data: [-1.26491106 -0.63245553 0. 0.63245553 1.26491106]
通过规范化和标准化,数值数据被转换为统一的尺度,可以更好地用于比较和分析。在进行数据分析和机器学习任务时,根据具体需求选择适当的规范化和标准化方法,以提高模型的性能。
