ITPub博客

首页 > 数据库 > 数据库开发技术 > Python数据标准化预处理常用方法介绍

Python数据标准化预处理常用方法介绍

原创 数据库开发技术 作者:derekwh 时间:2024-06-28 14:22:07 0 删除 编辑

在Python中,数据标准化是预处理流程中的关键步骤之一。通过将不同特征的数据映射到同一尺度,标准化过程有效地消除了原始数据中的量纲和数值范围差异,从而确保机器学习算法能够更公平、更准确地捕捉数据中的内在模式和结构。

这种预处理不仅有助于算法更好地理解数据,还能显著提升模型的训练效率和预测性能,是构建高效、可靠机器学习模型不可或缺的一环。


标准化的原理

标准化的原理是通过数学变换将数据的分布调整到预设的范围或形状。不同的标准化方法有不同的原理,但它们的目的都是为了更好地处理数据,使其适应机器学习算法的需求。

标准化的目的

  • 消除量纲影响:不同特征的数值可能具有不同的量纲,通过标准化可以将它们转换到同一尺度上,避免了量纲带来的影响。

  • 数值范围调整:某些算法对数据的数值范围敏感,通过标准化可以将数据转换到合适的范围内,提高算法的稳定性和性能。

  • 数据分布调整:某些算法假设数据服从正态分布,通过标准化可以将数据转换为近似正态分布,满足算法的假设条件。

常见的几种标准化

  • Min-Max标准化:将数据线性转换到指定的范围,通常是[0, 1]或[-1, 1]。这种方法可以保持原始数据的形状不变,但可能会受到异常值的影响。
  • Z-score标准化:将数据转换为均值为0,标准差为1的形式。这种方法可以消除数据的量纲影响,但不会改变数据的分布形状。
  • 对数Log转化:将数据转换为对数形式,通常用于处理偏态分布的数据。

下面我将通过代码示例来演示这些标准化方法的使用。

首先,我们需要导入必要的库:

import numpy as np

接下来,我们创建一个包含随机数据的NumPy数组作为示例。

# 生成一个包含随机数据的NumPy数组
np.random.seed(1)
data = np.random.randint(0, 100, size=(1, 100))
print("原始数据:")
print(data)

Min-Max标准化

def min_max_normalization(data):
    """
    Min-Max标准化
    :param data: 待处理的数据
    :return: 标准化后的数据
    """

    min_val = np.min(data)
    max_val = np.max(data)
    normalized_data = (data - min_val) / (max_val - min_val)
    return normalized_data

normalized_data_minmax = min_max_normalization(data)
print("Min-Max标准化后的数据:")
print(normalized_data_minmax)

Z-score标准化

def z_score_normalization(data):
    """
    这个函数接收一个数值型的数据列表或数组,并返回数据的Z-score标准化版本。
    
    参数:
    data (list or array-like): 需要被标准化的输入数据。
    
    返回:
    list: Z-score标准化后的数据。
    """

    data = np.array(data)  # 确保输入是一个数组
    mean = np.mean(data)   # 计算数据的均值
    std_dev = np.std(data) # 计算数据的标准差
    z_scores = (data - mean) / std_dev  # 应用Z-score标准化公式
    return z_scores.tolist()  # 以列表形式返回结果

# 示例使用:

normalized_data = z_score_normalization(data)
rounded_arr = np.round(normalized_data, 3)#小数保留3位
print("原始数据:", data)
print("标准化后的数据:", rounded_arr)

对数Log转化

def log_transform(data, base=10):
    """
    对数Log转化
    :param data: 待处理的数据
    :param base: 对数的底,默认为10
    :return: 转化后的数据
    """

    transformed_data = np.log(data) / np.log(base)
    return transformed_data

transformed_data_log = log_transform(data + 1)  # 加1是为了避免对0取对数的情况
print("对数Log转化后的数据:")
print(transformed_data_log)

以上就是Python中对数据进行标准化的方法及其示例代码。不同的标准化方法适用于不同的场景,选择合适的方法可以提高模型的性能和准确性。

原文作者:Python学习杂记;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
央企算法工程师,微信公众号: python数智工坊

注册时间:2021-03-14

  • 博文量
    305
  • 访问量
    162371