欢迎访问宙启技术站
智能推送

规范化和标准化数值数据的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]

通过规范化和标准化,数值数据被转换为统一的尺度,可以更好地用于比较和分析。在进行数据分析和机器学习任务时,根据具体需求选择适当的规范化和标准化方法,以提高模型的性能。