数据归一化方法及公式详解

一、最大-最小规范化

最大-最小规范化也被称为离差标准化。这种方法是通过将原始数据按比例进行缩放,使其固定在一定的范围内。具体来说,就是将原始数据$x$进行归一化得到新的数值$y$,公式如下:

y = (x-min)/(max-min)

其中,$min$和$max$分别是数据集中最小值和最大值。

最大-最小规范化可以保留原始数据的分布情况,而且其归一化结果的数值范围固定在[0,1]之间,方便比较不同特征的大小。

二、z-score标准化

z-score标准化也被称为标准差标准化。这种方法旨在通过将原始数据按照标准差的大小进行缩放,使其能够符合正态分布的特征。具体来说,就是将原始数据$x$进行归一化得到新的数值$y$,公式如下:

y = (x-mean)/std

其中,$mean$是数据集的均值,$std$是数据集的标准差。

z-score标准化可以将原始数据转换为具有相同单位的分数,并保留了原始数据的大小关系。此外,其归一化结果符合标准正态分布,便于计算。

三、小数定标标准化

小数定标标准化是一种通过移动小数点的位置来缩放数据的方法。具体来说,就是将原始数据$x$除以一个固定的基数$10^j$,得到新的数值$y$,公式如下:

y = x/10^j

其中,$j$是一个常数,是使得归一化后的数据的绝对值最大值小于1的最小整数。

小数定标标准化方法能够处理数据的动态范围差异,减小不同数值之间的量纲影响,缩小了数据的差异性,方便进行比较和处理。

四、其他归一化方法

除了上述三种常见的数据归一化方法外,还有一些其他的归一化方法。

1.范数归一化

范数归一化利用矩阵或向量的范数进行缩放,使得矩阵或向量的范数等于1。具体来说,就是将向量$x$进行归一化得到新的数值$y$,公式如下:

y = x/||x||

其中,$||x||$表示向量$x$的范数。

2.秩标准化

秩标准化是一种通过给数据进行排序来进行归一化的方法。具体来说,就是将原始数据$x$按其大小进行排名得到新的数据$y$,公式如下:

y = rank(x)/(N+1)

其中,$N$为数据集大小,$rank(x)$表示$x$在数据集中的排名。

五、代码示例

1.最大-最小规范化

def min_max_normalization(x):
    """进行最大-最小规范化"""
    x_min = min(x)
    x_max = max(x)
    return [(i-x_min)/(x_max-x_min) for i in x]

2.z-score标准化

def z_score_normalization(x):
    """进行z-score标准化"""
    mean_x = sum(x)/len(x)
    std_x = math.sqrt(sum([(i-mean_x)**2 for i in x])/len(x))
    return [(i-mean_x)/std_x for i in x]

3.小数定标标准化

def decimal_scaling_normalization(x):
    """进行小数定标标准化"""
    j = math.ceil(max([abs(i) for i in x]))
    return [i/(10**j) for i in x]

原创文章,作者:HHKMY,如若转载,请注明出处:https://www.506064.com/n/361529.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
HHKMYHHKMY
上一篇 2025-02-25 18:17
下一篇 2025-02-25 18:17

相关推荐

  • Python读取CSV数据画散点图

    本文将从以下方面详细阐述Python读取CSV文件并画出散点图的方法: 一、CSV文件介绍 CSV(Comma-Separated Values)即逗号分隔值,是一种存储表格数据的…

    编程 2025-04-29
  • 解决.net 6.0运行闪退的方法

    如果你正在使用.net 6.0开发应用程序,可能会遇到程序闪退的情况。这篇文章将从多个方面为你解决这个问题。 一、代码问题 代码问题是导致.net 6.0程序闪退的主要原因之一。首…

    编程 2025-04-29
  • ArcGIS更改标注位置为中心的方法

    本篇文章将从多个方面详细阐述如何在ArcGIS中更改标注位置为中心。让我们一步步来看。 一、禁止标注智能调整 在ArcMap中设置标注智能调整可以自动将标注位置调整到最佳显示位置。…

    编程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一个类的构造函数,在创建对象时被调用。在本篇文章中,我们将从多个方面详细讨论init方法的作用,使用方法以及注意点。 一、定义init方法 在Pyth…

    编程 2025-04-29
  • Python创建分配内存的方法

    在python中,我们常常需要创建并分配内存来存储数据。不同的类型和数据结构可能需要不同的方法来分配内存。本文将从多个方面介绍Python创建分配内存的方法,包括列表、元组、字典、…

    编程 2025-04-29
  • 用不同的方法求素数

    素数是指只能被1和自身整除的正整数,如2、3、5、7、11、13等。素数在密码学、计算机科学、数学、物理等领域都有着广泛的应用。本文将介绍几种常见的求素数的方法,包括暴力枚举法、埃…

    编程 2025-04-29
  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29
  • 如何用Python统计列表中各数据的方差和标准差

    本文将从多个方面阐述如何使用Python统计列表中各数据的方差和标准差, 并给出详细的代码示例。 一、什么是方差和标准差 方差是衡量数据变异程度的统计指标,它是每个数据值和该数据值…

    编程 2025-04-29
  • Python多线程读取数据

    本文将详细介绍多线程读取数据在Python中的实现方法以及相关知识点。 一、线程和多线程 线程是操作系统调度的最小单位。单线程程序只有一个线程,按照程序从上到下的顺序逐行执行。而多…

    编程 2025-04-29

发表回复

登录后才能评论