数据标准化方法

这篇具有很好参考价值的文章主要介绍了数据标准化方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天看到了“指数移动平均窗口标准化”,就研究了一下这是个啥东西,然后又顺便看了一下其他的数据标准化方法,这里顺便记录一下,方便以后查阅。

zscore标准化

zscore标准化是一种基于数据分布的标准化方法。它的基本思想是将数据转换为均值为0,标准差为1的分布,从而使得数据具有更好的可比性和可解释性。具体来说,对于给定的数据集 x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1,x2,...,xn,我们可以计算其zscore标准化后的结果 y 1 , y 2 , . . . , y n y_1, y_2, ..., y_n y1,y2,...,yn 如下:

y i = x i − μ σ y_i = \frac{x_i - \mu}{\sigma} yi=σxiμ

其中, μ \mu μ σ \sigma σ 分别表示数据集的均值和标准差。

相比于指数移动平均窗口标准化,zscore标准化具有以下优点:

  1. 算法简单,易于实现。
  2. 可以适用于任意分布的数据集。

当数据集符合正态分布或者需要将数据转换为标准正态分布时,可以考虑使用zscore标准化。

scipy.stats.zscore

>>> import numpy as np
>>> a = np.array([ 0.7972,  0.0767,  0.4383,  0.7866,  0.8091,
               0.1954,  0.6307,  0.6599,  0.1065,  0.0508])
>>> from scipy import stats
>>> stats.zscore(a)
array([ 1.1273, -1.247 , -0.0552,  1.0923,  1.1664, -0.8559,  0.5786,
        0.6748, -1.1488, -1.3324])

指数移动平均窗口标准化(感觉是错误的,抽时间改过来)

指数移动平均窗口标准化(Exponential Moving Window Normalization)和zscore标准化是两种常用的数据标准化方法,它们的作用是将数据转换为具有相似分布的标准正态分布或者均值为0,标准差为1的分布,以便更好地适配模型。

指数移动平均窗口标准化是一种基于指数移动平均的标准化方法。它的基本思想是计算每个时间步的均值和标准差,并使用指数移动平均来动态更新均值和标准差,从而使得标准化后的数据具有更好的稳定性和一致性。具体来说,对于给定的时间序列数据 x 1 , x 2 , . . . , x t x_1, x_2, ..., x_t x1,x2,...,xt,我们可以计算其指数移动平均窗口标准化后的结果 y 1 , y 2 , . . . , y t y_1, y_2, ..., y_t y1,y2,...,yt 如下:

y t = x t − μ t σ t + ϵ y_t = \frac{x_t - \mu_t}{\sigma_t + \epsilon} yt=σt+ϵxtμt

其中, μ t \mu_t μt σ t \sigma_t σt 分别表示时间步 t t t n n n 个时间步数据的均值和标准差, ϵ \epsilon ϵ 是一个小的常数,用于避免除数为0的情况。

相比于zscore标准化,指数移动平均窗口标准化具有以下优点:

  1. 可以动态更新均值和标准差,更好地适应数据的变化。
  2. 可以避免因为极端值的存在导致的标准化结果不稳定的问题。

当数据集中存在较多的极端值时,可以考虑使用指数移动平均窗口标准化,以避免标准化结果不稳定的问题。

import numpy as np

def exponential_moving_window_normalize(data, window_size, eps=1e-8):
    """
    Exponential Moving Window Normalization
    Args:
        data: 输入的数据,可以是一维或者二维的数组
        window_size: 窗口大小,即计算均值和标准差的时间步数
        eps: 避免分母为0的小常数,默认为1e-8
    Returns:
        Exponential Moving Window Normalized data
    """
    if len(data.shape) == 1:
        data = data.reshape(-1, 1)
    n_samples, n_features = data.shape
    mu = np.zeros((n_samples, n_features))
    sigma = np.zeros((n_samples, n_features))
    for i in range(n_samples):
        if i < window_size:
            mu[i] = np.mean(data[:i+1], axis=0)
            sigma[i] = np.std(data[:i+1], axis=0)
        else:
            mu[i] = np.mean(data[i-window_size+1:i+1], axis=0)
            sigma[i] = np.std(data[i-window_size+1:i+1], axis=0)
    return (data - mu) / (sigma + eps)
import torch

def exponential_moving_window_normalize(data, window_size, eps=1e-8):
    """
    Exponential Moving Window Normalization
    Args:
        data: 输入的数据,可以是一维或者二维的Tensor
        window_size: 窗口大小,即计算均值和标准差的时间步数
        eps: 避免分母为0的小常数,默认为1e-8
    Returns:
        Exponential Moving Window Normalized data
    """
    if len(data.shape) == 1:
        data = data.unsqueeze(-1)
    n_samples, n_features = data.shape
    mu = torch.zeros((n_samples, n_features), device=data.device)
    sigma = torch.zeros((n_samples, n_features), device=data.device)
    for i in range(n_samples):
        if i < window_size:
            mu[i] = torch.mean(data[:i+1], dim=0)
            sigma[i] = torch.std(data[:i+1], dim=0)
        else:
            mu[i] = torch.mean(data[i-window_size+1:i+1], dim=0)
            sigma[i] = torch.std(data[i-window_size+1:i+1], dim=0)
    return (data - mu) / (sigma + eps)

Min-Max标准化

Min-Max标准化(Min-Max Normalization):将数据线性缩放到[0,1]或者[-1,1]的区间内。具体来说,对于给定的数据集 x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1,x2,...,xn,我们可以计算其Min-Max标准化后的结果 y 1 , y 2 , . . . , y n y_1, y_2, ..., y_n y1,y2,...,yn 如下:
y i = x i − min ⁡ ( x ) max ⁡ ( x ) − min ⁡ ( x ) y_i = \frac{x_i - \min(x)}{\max(x) - \min(x)} yi=max(x)min(x)ximin(x)

Min-Max标准化(Min-Max Normalization):将数据线性缩放到[0,1]或者[-1,1]的区间内。适用于数据分布比较均匀、无明显异常值的情况。对于神经网络等对数据范围敏感的模型,Min-Max标准化也是一种常用的数据标准化方法。

>>> from sklearn.preprocessing import MinMaxScaler
>>> data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
>>> scaler = MinMaxScaler()
>>> print(scaler.fit(data))
MinMaxScaler()
>>> print(scaler.data_max_)
[ 1. 18.]
>>> print(scaler.transform(data))
[[0.   0.  ]
 [0.25 0.25]
 [0.5  0.5 ]
 [1.   1.  ]]
>>> print(scaler.transform([[2, 2]]))
[[1.5 0. ]]

Decimal Scaling标准化

Decimal Scaling标准化(Decimal Scaling Normalization):将数据除以一个适当的10的幂次方,使得标准化后的数据的绝对值小于1。具体来说,对于给定的数据集 x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1,x2,...,xn,我们可以计算其Decimal Scaling标准化后的结果 y 1 , y 2 , . . . , y n y_1, y_2, ..., y_n y1,y2,...,yn 如下:
y i = x i 1 0 j y_i = \frac{x_i}{10^j} yi=10jxi

其中, j j j 是一个适当的幂次方,使得 1 0 j > max ⁡ ( ∣ x 1 ∣ , ∣ x 2 ∣ , . . . , ∣ x n ∣ ) 10^j > \max(|x_1|, |x_2|, ..., |x_n|) 10j>max(x1,x2,...,xn)

Decimal Scaling标准化(Decimal Scaling Normalization):将数据除以一个适当的10的幂次方,使得标准化后的数据的绝对值小于1。适用于数据的值域较大,但又不方便或不必要对数据进行归一化的情况

import numpy as np

def decimal_scaling_normalization(x, j):
    y = x / 10**j
    return y

Logarithmic标准化

Logarithmic标准化(Logarithmic Normalization):将数据取对数后再进行标准化。具体来说,对于给定的数据集 x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1,x2,...,xn,我们可以计算其Logarithmic标准化后的结果 y 1 , y 2 , . . . , y n y_1, y_2, ..., y_n y1,y2,...,yn 如下:
y i = log ⁡ ( x i ) log ⁡ ( max ⁡ ( x ) ) y_i = \frac{\log(x_i)}{\log(\max(x))} yi=log(max(x))log(xi)

其中, max ⁡ ( x ) \max(x) max(x) 是数据集中的最大值。

Logarithmic标准化(Logarithmic Normalization):将数据取对数后再进行标准化。适用于数据的值域较大,但又不方便或不必要对数据进行归一化的情况对于呈现指数增长或指数衰减的数据,取对数可以使其更加平滑,从而更容易进行分析和建模

import numpy as np

def logarithmic_normalization(x):
    y = np.log(x) / np.log(np.max(x))
    return y

Power Transformation标准化

Power Transformation标准化(Power Transformation Normalization):将数据进行幂次变换后再进行标准化。具体来说,对于给定的数据集 x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1,x2,...,xn,我们可以先对其进行幂次变换 x i ( λ ) x_i^{(\lambda)} xi(λ),然后计算其Power Transformation标准化后的结果 y 1 , y 2 , . . . , y n y_1, y_2, ..., y_n y1,y2,...,yn 如下:
y i = x i ( λ ) − min ⁡ ( x ( λ ) ) max ⁡ ( x ( λ ) ) − min ⁡ ( x ( λ ) ) y_i = \frac{x_i^{(\lambda)} - \min(x^{(\lambda)})}{\max(x^{(\lambda)}) - \min(x^{(\lambda)})} yi=max(x(λ))min(x(λ))xi(λ)min(x(λ))

其中, λ \lambda λ 是一个超参数,用于控制幂次变换的强度, x ( λ ) x^{(\lambda)} x(λ) 是对数据集 x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1,x2,...,xn 进行幂次变换后得到的结果,即 x i ( λ ) = sgn ( x i ) ∣ x i ∣ λ x_i^{(\lambda)} = \text{sgn}(x_i) |x_i|^\lambda xi(λ)=sgn(xi)xiλ,其中 sgn ( ⋅ ) \text{sgn}(\cdot) sgn() 表示符号函数。

Power Transformation标准化(Power Transformation Normalization):将数据进行幂次变换后再进行标准化。适用于数据分布不均匀,存在明显偏态或异常值的情况通过幂次变换可以调整数据分布的形态,使得数据更符合模型的假设,从而提高模型的预测能力文章来源地址https://www.toymoban.com/news/detail-421789.html

import numpy as np

def power_transformation_normalization(x, lam):
    x_lam = np.sign(x) * np.abs(x)**lam
    y = (x_lam - np.min(x_lam)) / (np.max(x_lam) - np.min(x_lam))
    return y

到了这里,关于数据标准化方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 不要再搞混标准化与归一化啦,数据标准化与数据归一化的区别!!

    数据的标准化是将数据按照一定的 数学规则进行转换 ,使得数据满足特定的标准,通常是使数据满足正态分布或标准差为1的标准。 标准化的常见方法包括 最小-最大标准化 和 Z-score标准化 。最小-最大标准化将数据映射到 [0,1 ]的范围内,最小-最大标准化将数据映射到0-1区间

    2024年01月21日
    浏览(38)
  • python三种数据标准化

    数据变换是数据准备的重要环节,它通过 数据平滑 、 数据聚集 、 数据概化 和 规范化 等方式将数据转换成适用于数据挖掘的形式。常见的变换方法: 1.数据平滑:去除数据中的噪声,将连续数据离散化。这里可以采用分箱、聚类和回归的方式进行数据平滑 2.数据聚集:对

    2024年02月07日
    浏览(34)
  • 蔡春久:主数据标准化如何建设

    亿信华辰「2023数字赋能季」主数据管理专场第一期成功举办。我们邀请到了中国数据标准化及治理专家蔡春久为大家带来主数据管理从理论到工具层面的分享,全程干货,深度解读,以下是演讲全文。 蔡春久:中国大数据技术标准推进委员会数据资产专家、中电标协企业信

    2023年04月25日
    浏览(33)
  • 用UiPath实现网页抓取——表格数据提取-1-单击选择分类-ISO标准化-01-综合、术语、标准化、文献目录获取

    准备获取目录的链接是 全国标准信息公告服务平台链接: https://std.samr.gov.cn/search/iso?tid=q= 第一步,标注啊类型选择——ISO 第二步,标准化状态选择——现行 第三步,ICS分类选择——01_综合、术语标准化、文献 将数据分别复制到excel文件中,如下图。 由于国际标准分类号在

    2024年02月04日
    浏览(40)
  • 数据标准化与归一化 及其区别

      数据一般都是有单位的,比如身高的单位有米、厘米等。需要对此类数值型特征进行 无量纲化处理 ,即是使不同规格的 数据转换到同一规格 。常见的无量纲化方法有 标准化 和 归一化 。 主要参考:机器学习算法:特征工程 某些算法要求样本具有0均值和1方差,即 需要

    2024年02月09日
    浏览(29)
  • 干货 | 大数据交易所数据安全流通体系标准化尝试

    以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。 第一部分:国内大数据交易所发展现状 第二部分:国外大数据交易模式及法律法规 欧盟的数据交易模式是基于2022年5月16日所提出的《数据治理法案》,其中提出了 数据中介 这一新的商业

    2024年02月17日
    浏览(33)
  • Fabarta 正式加入大数据技术标准推进委员会,共同推动大数据技术标准化进程

    近日,中国通信标准化协会大数据技术标准推进委员会(以下简称“CCSA TC601”)在杭州召开了 2023 年度第一次全体工作会议。本次会议为期两天,共有来自各成员单位的 230 余位专家、代表参会。本次会议上 Fabarta 作为新成员单位之一,由产品总监陈振代表公司进行了介绍发

    2024年02月02日
    浏览(36)
  • 【机器学习】数据预处理 - 归一化和标准化

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 处理数据之前,通常会使用一些转换函数将 「特征数据」 转换成更适合 「

    2024年02月15日
    浏览(37)
  • 文本的清洗和标准化:如何处理混乱的数据?

    ❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈 (封面图由文心一格生成) 在现代社会,我们每天都处理大量的文本数据。

    2024年02月03日
    浏览(30)
  • 数据标准化在人工智能与大数据领域的应用

    数据标准化是指将数据集中的数据进行规范化处理,使其具有统一的格式和规则,从而使得数据更容易进行分析和处理。在人工智能和大数据领域,数据标准化的重要性不言而喻。随着数据的规模和复杂性不断增加,如何有效地处理和分析数据成为了一大挑战。数据标准化可

    2024年02月21日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包