精华内容
下载资源
问答
  • 聊聊机器学习中的那些花儿:标准化、归一化、正则化、离散化和白化
    千次阅读
    2021-03-31 10:55:40

    机器学习的本质是从数据集中发现数据内在的特征,而数据的内在特征往往被样本的规格、分布范围等外在特征所掩盖。数据预处理正是为了最大限度地帮助机器学习模型或算法找到数据内在特征所做的一系列操作,这些操作主要包括标准化、归一化、正则化、离散化和白化等。

    1 标准化

    假定样本集是二维平面上的若干个点,横坐标 x 分布于区间 [0,100] 内,纵坐标 y 分布于区间 [0,1] 内。显然,样本集的 x 特征列和 y 特征列的动态范围相差巨大,对于机器学习模型(如k-近邻或 k-means 聚类)的影响也会有显著差别。标准化处理正是为了避免某一个动态范围过大的特征列对计算结果造成影响,同时还可以提升模型精度。标准化的实质是对样本集的每个特征列减去该特征列均值进行中心化,再除以标准差进行缩放

    Scikit-learn的预处理子模块preprocessing提供了一个快速标准化函数scale(),使用该函数可以直接返回标准化后的数据集,其代码如下。

    >>> import numpy as np
    >>> from sklearn import preprocessing as pp
    >>> d = np.array([[ 1., -5., 8.], [ 2., -3., 0.], [ 0., -1., 1.]])
    >>> d_scaled = pp.scale(d) # 对数据集d做标准化
    >>> d_scaled
    array([[ 0. , -1.22474487, 1.40487872],
     [ 1.22474487, 0. , -0.84292723],
     [-1.22474487, 1.22474487, -0.56195149]])
    >>> d_scaled.mean(axis=0) # 标准化以后的数据集,各特征列的均值为0
    array([0., 0., 0.])
    >>> d_scaled.std(axis=0) # 标准化以后的数据集,各特征列的标准差为1
    array([1., 1., 1.])
    

    预处理子模块 preprocessing 还提供了一个实用类 StandardScaler,它保存了训练集上各特征列的平均值和标准差,以便以后在测试集上应用相同的变换。此外,实用类 StandardScaler 还可以通过with_mean和with_std参数指定是否中心化和是否按标准差缩放,其代码如下。

    >>> import numpy as np
    >>> from sklearn import preprocessing as pp
    >>> X_train = np.array([[ 1., -5., 8.], [ 2., -3., 0.], [ 0., -1., 1.]])
    >>> scaler = pp.StandardScaler().fit(X_train)
    >>> scaler
    StandardScaler(copy=True, with_mean=True, with_std=True)
    >>> scaler.mean_ # 训练集各特征列的均值
    array([ 1., -3., 3.])
    >>> scaler.scale_ # 训练集各特征列的标准差
    array([0.81649658, 1.63299316, 3.55902608])
    >>> scaler.transform(X_train) # 标准化训练集
    array([[ 0. , -1.22474487, 1.40487872],
     [ 1.22474487, 0. , -0.84292723],
     [-1.22474487, 1.22474487, -0.56195149]])
    >>> X_test = [[-1., 1., 0.]] # 使用训练集的缩放标准来标准化测试集
    >>> scaler.transform(X_test)
    array([[-2.44948974, 2.44948974, -0.84292723]])
    

    2 归一化

    标准化是用特征列的均值进行中心化,用标准差进行缩放。如果用数据集各个特征列的最小值进行中心化后,再按极差(最大值-最小值)进行缩放,即数据减去特征列的最小值,并且会被收敛到区间 [0,1] 内,这个过程就叫作数据归一化。

    Scikit-learn的预处理子模块preprocessing提供MinMaxScaler类来实现归一化功能。MinMaxScaler类有一个重要参数feature_range,该参数用于设置数据压缩的范围,默认是[0,1]。

    >>> import numpy as np
    >>> from sklearn import preprocessing as pp
    >>> X_train = np.array([[ 1., -5., 8.], [ 2., -3., 0.], [ 0., -1., 1.]])
    >>> scaler = pp.MinMaxScaler().fit(X_train) # 默认数据压缩范围为[0,1]
    >>> scaler
    MinMaxScaler(copy=True, feature_range=(0, 1))
    >>> scaler.transform(X_train)
    array([[0.5 , 0. , 1. ],
     [1. , 0.5 , 0. ],
     [0. , 1. , 0.125]])
    >>> scaler = pp.MinMaxScaler(feature_range=(-2, 2)) # 设置数据压缩范围为[-2,2]
    >>> scaler = scaler.fit(X_train)
    >>> scaler.transform(X_train)
    array([[ 0. , -2. , 2. ],
     [ 2. , 0. , -2. ],
     [-2. , 2. , -1.5]])
    

    因为归一化对异常值非常敏感,所以大多数机器学习算法会选择标准化来进行特征缩放。在主成分分析(Principal Components Analysis,PCA)、聚类、逻辑回归、支持向量机、神经网络等算法中,标准化往往是最好的选择。归一化在不涉及距离度量、梯度、协方差计算,以及数据需要被压缩到特定区间时被广泛使用,如数字图像处理中量化像素强度时,都会使用归一化将数据压缩在区间 [0,1] 内。

    3 正则化

    归一化是对数据集的特征列的操作,而正则化是将每个数据样本的范数单位化,是对数据集的行操作。如果打算使用点积等运算来量化样本之间的相似度,那么正则化将非常有用。

    Scikit-learn的预处理子模块preprocessing提供了一个快速正则化函数normalize(),使用该函数可以直接返回正则化后的数据集。normalize()函数使用参数norm指定I1范式或I2范式,默认使用I2范式。I1 范式可以理解为单个样本各元素的绝对值之和为 1;I2 范式可理解为单个样本各元素的平方和的算术根为 1,相当于样本向量的模(长度)。

    >>> import numpy as np
    >>> from sklearn import preprocessing as pp
    >>> X_train = np.array([[ 1., -5., 8.], [ 2., -3., 0.], [ 0., -1., 1.]])
    >>> pp.normalize(X_train) # 使用I2范式正则化,每行的范数为1
    array([[ 0.10540926, -0.52704628, 0.84327404],
     [ 0.5547002 , -0.83205029, 0. ],
     [ 0. , -0.70710678, 0.70710678]])
    >>> pp.normalize(X_train, norm='I1') # 使用I1范式正则化,每行的范数为1
    array([[ 0.07142857, -0.35714286, 0.57142857],
     [ 0.4 , -0.6 , 0. ],
     [ 0. , -0.5 , 0.5 ]])
    

    4 离散化

    离散化(Discretization)是将连续特征划分为离散特征值,典型的应用是灰度图像的二值化。如果使用等宽的区间对连续特征离散化,则被称为 K-bins 离散化。Scikit-learn的预处理子模块preprocessing提供了Binarizer类和KbinsDiscretizer类来进行离散化,前者用于二值化,后者用于 K-bins 离散化。

    >>> import numpy as np
    >>> from sklearn import preprocessing as pp
    >>> X = np.array([[-2,5,11],[7,-1,9],[4,3,7]])
    >>> bina = pp.Binarizer(threshold=5) # 指定二值化阈值为5
    >>> bina.transform(X)
    array([[0, 0, 1],
     [1, 0, 1],
     [0, 0, 1]])
    >>> est = pp.KBinsDiscretizer(n_bins=[2, 2, 3], encode='ordinal').fit(X)
    >>> est.transform(X) # 三个特征列离散化为2段、2段、3段
    array([[0., 1., 2.],
     [1., 0., 1.],
     [1., 1., 0.]])
    

    5 白化

    白化一词是从whitening翻译过来的,难以望文生义,只能从白化后的效果去理解。数据白化有两个目的,一是去除或降低特征列之间的相关性,二是使得每个特征列的方差为1。显然,白化的第一个目标就是主成分分析(PCA),通过主成分分析降维,消除方差占比较小的特征维;白化的第二个目标就是标准化。

    白化分为PCA白化和ZCA白化两种。PCA 白化将原数据各个特征维变换到主成分轴上,消除了特征之间的相关性,并使得各个主成分的方差为1。ZCA白化则是将PCA 白化的结果反变换到原数据的各个特征维轴上,因为ZCA白化过程中通常不会降维。

    Scikit-learn没有提供专用的白化方法,不过借助成分分析子模块decomposition提供的PCA 类可以轻松实现PCA白化。PCA类的参数whiten用于设置是否移除特征间的线性关联,默认值为False。

    假如一位姑娘手头有一堆相亲资料,每位帅哥的信息由年龄、身高、体重、年薪、房产数量、汽车数量等多个特征项组成。通过白化操作,能够生成一个特征维较小、且可以直接比较样本间差距的数据集。

    >>> import numpy as np
    >>> from sklearn import preprocessing as pp
    >>> from sklearn.decomposition import PCA
    >>> ds = np.array([
    	[25, 1.85, 70, 50, 2, 1], 
    	[22, 1.78, 72, 22, 0, 1], 
    	[26, 1.80, 85, 25, 1, 0],
    	[28, 1.70, 82, 100, 5, 2]
    ]) # 4个样本,6个特征列
    >>> m = PCA(whiten=True) # 实例化主成分分析类,指定白化参数
    >>> m.fit(ds) # 主成分分析
    PCA(whiten=True)
    >>> d = m.transform(ds) # 返回主成分分析结果
    >>> d # 特征列从6个降至4个
    array([[ 0.01001541, -0.99099492, -1.12597902, -0.03748764],
           [-0.76359767, -0.5681715 ,  1.15935316,  0.67477757],
           [-0.65589352,  1.26928222, -0.45686577, -1.8639689 ],
           [ 1.40947578,  0.28988421,  0.42349164,  1.2724972 ]])
    >>> d.std(axis=0) # 显示各特征列方差
    array([0.8660254 , 0.8660254 , 0.8660254 , 1.17790433])
    >>> d = pp.scale(d) # 标准化
    >>> d.std(axis=0) # 标准化后的各特征列方差均为1
    array([1., 1., 1., 1.])
    

    GitHub上有人提供了ZCA白化的代码,如果需要,请访问这里

    更多相关内容
  • 标准化和归一化 超全详解

    千次阅读 2020-09-03 21:48:21
    一、标准化 / 归一化定义 归一化和标准化经常被搞混,程度还比较严重,非常干扰大家的理解。为了方便后续的讨论,必须先明确二者的定义。 首先定义常见的结构化数据表格,第一行的表头是表示各种特征,而后每一列...

    原理说明

    一、标准化 / 归一化定义

    归一化和标准化经常被搞混,程度还比较严重,非常干扰大家的理解。为了方便后续的讨论,必须先明确二者的定义。

    首先定义常见的结构化数据表格,第一行的表头是表示各种特征,而后每一列表示某种特征的所有数值。

    无论标准化还是归一化都是针对某个特征(某一列)进行操作的。

    1. 归一化

    就是将训练集中某一列数值特征(假设是第 i i i 列)的值缩放到0和1之间。方法如下所示:

    x i − min ⁡ ( x i ) max ⁡ ( x i ) − min ⁡ ( x i ) \frac{x_{i}-\min \left(x_{i}\right)}{\max \left(x_{i}\right)-\min \left(x_{i}\right)} max(xi)min(xi)ximin(xi)

    2. 标准化

    就是将训练集中某一列数值特征(假设是第i列)的值缩放成均值为0,方差为1的状态。如下所示:
    x i − x ˉ σ ( x ) \frac{x_{i}-\bar{x}}{\sigma(x)} σ(x)xixˉ

    3. 进一步明确二者含义

    归一化和标准化的相同点都是对某个特征(column)进行缩放(scaling)而不是对某个样本的特征向量(row)进行缩放。对特征向量进行缩放是毫无意义的(暗坑1) 比如三列特征:身高、体重、血压。每一条样本(row)就是三个这样的值,对这个row无论是进行标准化还是归一化都是好笑的,因为你不能将身高、体重和血压混到一起去!

    在线性代数中,将一个向量除以向量的长度,也被称为标准化,不过这里的标准化是将向量变为长度为1的单位向量,它和我们这里的标准化不是一回事儿,不能搞混(暗坑2)。

    二、标准化/归一化的好处

    2.1 提升模型精度

    在机器学习算法的目标函数(例如 SVM 的 RBF 内核或线性模型的 L1 和 L2 正则化),许多学习算法中目标函数的基础都是假设所有的特征都是零均值并且具有同一阶数上的方差。如果某个特征的方差比其他特征大几个数量级,那么它就会在学习算法中占据主导位置,导致学习器并不能像我们说期望的那样,从其他特征中学习。

    举一个简单的例子,在KNN中,我们需要计算待分类点与所有实例点的距离。假设每个实例点(instance)由n个features构成。如果我们选用的距离度量为欧式距离,如果数据预先没有经过归一化,那么那些绝对值大的features在欧式距离计算的时候起了决定性作用。

    经验上说,归一化是让不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。

    2.2 提升收敛速度

    对于线性model来说,数据归一化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。

    在这里插入图片描述
    比较这两个图,前者是没有经过归一化的,在梯度下降的过程中,走的路径更加的曲折,而第二个图明显路径更加平缓,收敛速度更快。 对于神经网络模型,避免饱和是一个需要考虑的因素,通常参数的选择决定于 input 数据的大小范围。

    2.3 解决数值计算的一些问题

    比如两个变量的量纲不同,可能一个的数值远大于另一个那么他们同时作为变量的时候 可能会造成数值计算的问题,比如说求矩阵的逆可能很不精确

    Machine-Learning-Note(机器学习笔记)

    三、标准化/归一化的对比分析

    首先明确,在机器学习中,标准化是更常用的手段,归一化的应用场景是有限的。原因有两点:

    1. 标准化更好保持了样本间距
      当样本中有异常点时,归一化有可能将正常的样本“挤”到一起去。比如三个样本,某个特征的值为1,2,10000,假设10000这个值是异常值,用归一化的方法后,正常的1,2就会被“挤”到一起去。如果不幸的是1和2的分类标签还是相反的,那么,当我们用梯度下降来做分类模型训练时,模型会需要更长的时间收敛,因为将样本分开需要更大的努力!而标准化在这方面就做得很好,至少它不会将样本“挤到一起”。
    2. 标准化更符合统计学假设
      对一个数值特征来说,很大可能它是服从正态分布的。标准化其实是基于这个隐含假设,只不过是略施小技,将这个正态分布调整为均值为0,方差为1的标准正态分布而已。

    所以,下面的讨论我们先集中分析标准化在机器学习中运用的情况,在文章末尾,简单探讨一下归一化的使用场景。这样更能凸显重点,又能保持内容的完整性,暂时忘记归一化,让我们focus到标准化上吧。

    四、逻辑回归必须要进行标准化吗?

    面试时,无论你回答必须或者不必须,你都是错的!

    4.1 是否正则化

    真正的答案是,这取决于我们的逻辑回归是不是用正则

    • 如果你不用正则,那么,标准化并不是必须的,
    • 如果你用正则,那么标准化是必须的。(暗坑3)

    为什么呢?

    因为不用正则时,我们的损失函数只是仅仅在度量预测与真实的差距,加上正则后,我们的损失函数除了要度量上面的差距外,还要度量参数值是否足够小。而参数值的大小程度或者说大小的级别是与特征的数值范围相关的。举例来说,我们用体重预测身高,体重用kg衡量时,训练出的模型是:
    身 高 = w ∗ 体 重 身高 = w * 体重 =w

    w w w 就是我们训练出来的参数。

    当我们的体重用吨来衡量时, w w w 的值就会扩大为原来的 1000 1000 1000 倍。
    在上面两种情况下,都用 L1 正则的话,显然对模型的训练影响是不同的。

    假如不同的特征的数值范围不一样,有的是0到0.1,有的是100到10000,那么,每个特征对应的参数大小级别也会不一样,在 L1 正则时,我们是简单将参数的绝对值相加,因为它们的大小级别不一样,就会导致 L1 最后只会对那些级别比较大的参数有作用,那些小的参数都被忽略了。

    4.2 标准化对 LR 的好处

    如果你回答到这里,面试官应该基本满意了,但是他可能会进一步考察你,如果不用正则,那么标准化对逻辑回归有什么好处吗?

    答案是有好处,进行标准化后,我们得出的参数值的大小可以反应出不同特征对样本label的贡献度,方便我们进行特征筛选。如果不做标准化,是不能这样来筛选特征的。

    4.3 标准化的注意事项

    答到这里,有些厉害的面试官可能会继续问,做标准化有什么注意事项吗

    最大的注意事项就是先拆分出 test 集,只在训练集上标准化, 即均值和标准差是从训练集中计算出来的,不要在整个数据集上做标准化,因为那样会将 test 集的信息引入到训练集中,这是一个非常容易犯的错误!

    五、哪些模型需要标准化,哪些不需要?

    5.1 需要标准化的模型

    1. 线性回归,LR,Kmeans,KNN, SVM 等一些涉及到距离有关的算法,
    2. 聚类算法 PCA等
    3. GBDT、adaboost
      因为GBDT的树是在上一颗树的基础上通过梯度下降求解最优解,归一化能收敛的更快,GBDT通过减少bias来提高性能

    1、一般算法如果本身受量纲影响较大,或者相关优化函数受量纲影响大,则需要进行特征归一化。

    2、树模型特征归一化可能会降低模型的准确率,但是能够使模型更加平稳

    5.2 不需要标准化的模型

    当然,也不是所有的模型都需要做归一的,比如模型算法里面没有关于对距离的衡量,没有关于对变量间标准差的衡量。比如 decision tree 决策树,他采用算法里面没有涉及到任何和距离等有关的,所以在做决策树模型时,通常是不需要将变量做标准化的。

    概率模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、随机森林(RF)

    对于树形结构为什么不需要归一化?

    因为数值缩放不影响分裂点位置,对树模型的结构不造成影响。
    按照特征值进行排序的,排序的顺序不变,那么所属的分支以及分裂点就不会有不同。

    而且,树模型是不能进行梯度下降的,因为构建树模型(回归树)寻找最优点时是通过寻找最优分裂点完成的,因此树模型是阶跃的,阶跃点是不可导的,并且求导没意义,也就不需要归一化。所以树模型(回归树)寻找最优点是通过寻找最优分裂点完成的

    5.3 特殊说明

    要强调:能不归一化最好不归一化,之所以进行数据归一化是因为各维度的量纲不相同。而且需要看情况进行归一化。

    有些模型在各维度进行了不均匀的伸缩后,最优解与原来不等价(如SVM)需要归一化。

    有些模型伸缩有与原来等价,如:LR则不用归一化,但是实际中往往通过迭代求解模型参数,如果目标函数太扁(想象一下很扁的高斯模型)迭代算法会发生不收敛的情况,所以最坏进行数据归一化。

    补充:其实本质是由于loss函数不同造成的,SVM用了欧拉距离,如果一个特征很大就会把其他的维度dominated。而LR可以通过权重调整使得损失函数不变。

    代码实现

    • 使用 sklearnStandardScaler() 函数可以;
    • 或者自己按照公式写函数 normalize() 亦可

    结果一致

    import numpy as np
    from sklearn.preprocessing import StandardScaler
    
    def normalize(data):
        _mean = np.mean(data, axis=0)
        _std = np.std(data, axis=0)
        new_data = (data - _mean) / _std
        return new_data
    
    if __name__ == "__main__":
        test_data = np.array([[1,11,120,1000],
                              [2,25,300,2000],
                              [3,34,390,3000],
                              [4,40,460,4000],
                              [5,50,500,5200]])
        print("test_data:\n", test_data)
        res_1 = normalize(test_data)
        print("res1:\n", res_1)
    
        scaler = StandardScaler()
        res_2 = scaler.fit_transform(test_data)
        print("res2:\n", res_2)
    
    
    

    输出:

    test_data:
     [[   1   11  120 1000]
     [   2   25  300 2000]
     [   3   34  390 3000]
     [   4   40  460 4000]
     [   5   50  500 5200]]
    res1:
     [[-1.41421356 -1.58113883 -1.72958876 -1.38599238]
     [-0.70710678 -0.52704628 -0.39913587 -0.70658435]
     [ 0.          0.15058465  0.26609058 -0.02717632]
     [ 0.70710678  0.6023386   0.78348892  0.65223171]
     [ 1.41421356  1.35526185  1.07914512  1.46752135]]
    res2:
     [[-1.41421356 -1.58113883 -1.72958876 -1.38599238]
     [-0.70710678 -0.52704628 -0.39913587 -0.70658435]
     [ 0.          0.15058465  0.26609058 -0.02717632]
     [ 0.70710678  0.6023386   0.78348892  0.65223171]
     [ 1.41421356  1.35526185  1.07914512  1.46752135]]
    

    参考:

    1. [机器学习] 数据特征 标准化和归一化你了解多少?
    2. 树形结构为什么不需要归一化,树模型为什么是不能进行梯度下降
    3. 面试笔试整理3:深度学习机器学习面试问题准备(必会)
    展开全文
  • 标准化与归一化1、标准化(Standardization)和归一化(Normalization)概念1.1、定义1.2、联系和差异一、联系二、差异1.3、标准化和归一化的多种方式2、标准化、归一化的原因、用途3、什么时候Standardization,什么...

    1、标准化(Standardization)和归一化(Normalization)概念

    1.1、定义

    归一化和标准化都是对数据做变换的方式,将原始的一列数据转换到某个范围,或者某种形态,具体的:

    归一化( N o r m a l i z a t i o n Normalization Normalization):将一列数据变化到某个固定区间(范围)中,通常,这个区间是[0, 1],广义的讲,可以是各种区间,比如映射到[0,1]一样可以继续映射到其他范围,图像中可能会映射到[0,255],其他情况可能映射到[-1,1];
    在这里插入图片描述
    标准化( S t a n d a r d i z a t i o n Standardization Standardization):将数据变换为均值为0,标准差为1的分布切记,并非一定是正态的
    在这里插入图片描述
    中心化:另外,还有一种处理叫做中心化,也叫零均值处理,就是将每个原始数据减去这些数据的均值。

    我在这里多写一点,很多博客甚至书中说, S t a n d a r d i z a t i o n Standardization Standardization是改变数据分布,将其变换为服从 N ( 0 , 1 ) N(0,1) N(0,1)的标准正态分布,这点是错的,Standardization会改变数据的均值、标准差都变了(当然,严格的说,均值和标准差变了,分布也是变了,但分布种类依然没变,原来是啥类型,现在就是啥类型),但本质上的分布并不一定是标准正态,完全取决于原始数据是什么分布。我个举例子,我生成了100万个服从 b e t a ( 0.5 , 0.5 ) beta(0.5,0.5) beta(0.5,0.5)的样本点(你可以替换成任意非正态分布,比如卡方等等,beta(1,1)是一个服从 U ( 0 , 1 ) U(0,1) U(0,1)的均匀分布,所以我选了 b e t a ( 0.5 , 0.5 ) beta(0.5,0.5) beta(0.5,0.5)),称这个原始数据为 b 0 b_0 b0,分布如下图所示:
    在这里插入图片描述
    通过计算机计算,样本 b 0 b_0 b0的均值和方差分别为0.49982和0.12497(约为0.5和0.125)
    对这个数据做 S t a n d a r d i z a t i o n Standardization Standardization,称这个标准化后的数据为 b 1 b_1 b1,分布如下:
    在这里插入图片描述
    可以看到数据形态完全不是正态分布,但是数学期望和方差已经变了。beta分布的数学期望为 a a + b \frac{a}{a+b} a+ba,方差为 a b ( a + b ) 2 ( a + b + 1 ) \frac{ab}{(a+b)^2(a+b+1)} (a+b)2(a+b+1)ab,所以 E ( b 0 ) = 0.5 0.5 + 0.5 = 1 2 E(b_0)=\frac{0.5}{0.5+0.5}=\frac{1}{2} E(b0)=0.5+0.50.5=21 V a r ( b 0 ) = 1 8 Var(b_0)=\frac{1}{8} Var(b0)=81,这也和我们上文所计算的样本均值和方差一致,而 b 1 b_1 b1的均值和方差分别为:-1.184190523417783e-1和1,均值和方差已经不再是0.5和0.125,分布改变,但绝不是一个正态分布,你不信的话,觉得看分布图不实锤,通过 q q qq qq图和检验得到的结果如下:
    在这里插入图片描述
    你要的qqplot
    在这里插入图片描述
    你要的KS检验,拒绝正态性原假设。
    当然,如果你原始数据就是正太的,那么做了 S t a n d a r d i z a t i o n Standardization Standardization,生成的就是标准正态的数据,切记哦,谁再和你说 S t a n d a r d i z a t i o n Standardization Standardization之后得到 N ( 0 , 1 ) N(0,1) N(0,1)你就反驳他。
    之所以大家会把标准化和正态分布联系起来,是因为实际数据中大部分都是正态分布,起码近似正态,另外,我看到很多人说标准化的基本假设是对正态数据,我并没有从哪些知名度较高的课本教材中查询到依据,如果有知道的同学也可以给我普及

    1.2、联系和差异

    一、联系

    说完 S t a n d a r d i z a t i o n Standardization Standardization N o r m a l i z a t i o n Normalization Normalization的定义和通常的计算方式,再说说二者的联系和差异。
    说道联系, S t a n d a r d i z a t i o n Standardization Standardization N o r m a l i z a t i o n Normalization Normalization本质上都是对数据的线性变换,广义的说,你甚至可以认为他们是同一个母亲生下的双胞胎,为何而言,因为二者都是不会改变原始数据排列顺序的线性变换
    假设原始数据为 X X X,令 α = X m a x − X m i n \alpha=X_{max}-X_{min} α=XmaxXmin,令 β = X m i n \beta=X_{min} β=Xmin(很明显,数据给定后 α 、 β \alpha、\beta αβ就是常数),则 X N o r m a l i z a t i o n = X i − β α = X i α − β α = X i α − c X_{Normalization}=\frac{X_{i}-\beta}{\alpha}=\frac{X_{i}}{\alpha}-\frac{\beta}{\alpha}=\frac{X_{i}}{\alpha}-c XNormalization=αXiβ=αXiαβ=αXic,可见, N o r m a l i z a t i o n Normalization Normalization是一个线性变换,按 α \alpha α进行缩放,然后平移 c c c个单位。其实 X i − β α \frac{X_{i}-\beta}{\alpha} αXiβ中的 β \beta β α \alpha α就像是 S t a n d a r d i z a t i o n Standardization Standardization中的 μ \mu μ σ \sigma σ(数据给定后, μ \mu μ σ \sigma σ也是常数)。线性变换,必不改变原始的排位顺序。

    二、差异

    1. 第一点:显而易见, N o r m a l i z a t i o n Normalization Normalization会严格的限定变换后数据的范围,比如按之前最大最小值处理的 N o r m a l i z a t i o n Normalization Normalization,它的范围严格在 [ 0 , 1 ] [0,1] [0,1]之间;
      S t a n d a r d i z a t i o n Standardization Standardization就没有严格的区间,变换后的数据没有范围,只是其均值是 0 0 0,标准差为 1 1 1
    2. 第二点:归一化( N o r m a l i z a t i o n Normalization Normalization)对数据的缩放比例仅仅和极值有关,就是说比如100个数,你除去极大值和极小值其他数据都更换掉,缩放比例 α = X m a x − X m i n \alpha=X_{max}-X_{min} α=XmaxXmin是不变的;反观,对于标准化( S t a n d a r d i z a t i o n Standardization Standardization)而言,它的 α = σ \alpha=\sigma α=σ β = μ \beta=\mu β=μ,如果除去极大值和极小值其他数据都更换掉,那么均值和标准差大概率会改变,这时候,缩放比例自然也改变了。

    1.3、标准化和归一化的多种方式

    广义的说,标准化和归一化同为对数据的线性变化,所以我们没必要规定死,归一化就是必须到 [ 0 , 1 ] [0,1] [0,1]之间,我到 [ 0 , 1 ] [0,1] [0,1]之间之后再乘一个255你奈我何?常见的有以下几种:

    1. 归一化的最通用模式 N o r m a l i z a t i o n Normalization Normalization,也称线性归一化(我看有些地方也叫rescaling,有待考证,如果大家看到这个词能想到对应的是归一化就行):

    X n e w = X i − X m i n X m a x − X m i n X_{new}=\frac{X_{i}-X_{min}}{X_{max}-X_{min}} Xnew=XmaxXminXiXmin,范围[0,1]

    1. Mean normalization:

    X n e w = X i − m e a n ( X ) X m a x − X m i n X_{new}=\frac{X_{i}-mean(X)}{X_{max}-X_{min}} Xnew=XmaxXminXimean(X),范围[-1,1]

    1. 标准化( S t a n d a r d i z a t i o n Standardization Standardization),也叫标准差标准化:

    X n e w = X i − μ σ X_{new}=\frac{X_{i}-\mu}{\sigma} Xnew=σXiμ,范围实数集

    另外,我会在文章最后介绍一些比较常用的非线性数据处理方式比如boxcox变换等

    2、标准化、归一化的原因、用途

    为何统计模型、机器学习和深度学习任务中经常涉及到数据(特征)的标准化和归一化呢,我个人总结主要有以下几点,当然可能还有一些其他的作用,大家见解不同,我说的这些是通常情况下的原因和用途。

    1. 统计建模中,如回归模型,自变量 X X X的量纲不一致导致了回归系数无法直接解读或者错误解读;需要将 X X X都处理到统一量纲下,这样才可比;
    2. 机器学习任务和统计学任务中有很多地方要用到“距离”的计算,比如PCA,比如KNN,比如kmeans等等,假使算欧式距离,不同维度量纲不同可能会导致距离的计算依赖于量纲较大的那些特征而得到不合理的结果;
    3. 参数估计时使用梯度下降,在使用梯度下降的方法求解最优化问题时, 归一化/标准化后可以加快梯度下降的求解速度,即提升模型的收敛速度。

    3、什么时候Standardization,什么时候Normalization

    我个人理解:如果你对处理后的数据范围有严格要求,那肯定是归一化,个人经验,标准化是ML中更通用的手段,如果你无从下手,可以直接使用标准化;如果数据不为稳定,存在极端的最大最小值,不要用归一化。在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,标准化表现更好;在不涉及距离度量、协方差计算的时候,可以使用归一化方法。
    PS:PCA中标准化表现更好的原因可以参考(PCA标准化)

    4、所有情况都应当Standardization或Normalization么

    当原始数据不同维度特征的尺度(量纲)不一致时,需要标准化步骤对数据进行标准化或归一化处理,反之则不需要进行数据标准化。也不是所有的模型都需要做归一的,比如模型算法里面有没关于对距离的衡量,没有关于对变量间标准差的衡量。比如决策树,他采用算法里面没有涉及到任何和距离等有关的,所以在做决策树模型时,通常是不需要将变量做标准化的;另外,概率模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率。

    5、一些其他的数据变换方式

    5.1、log变换

    X n e w = l o g 10 ( X i ) / l o g 10 ( X m a x ) X_{new}=log_{10}(X_{i})/log_{10}(X_{max}) Xnew=log10(Xi)/log10(Xmax)

    5.2、sigmoid变换(sigmoid函数)

    X n e w = 1 1 + e − X i X_{new}=\frac{1}{1+e^{-X_{i}}} Xnew=1+eXi1

    其图像如下:
    在这里插入图片描述

    5.3、softmax变换(softmax函数)

    X n e x = e X i ∑ e X i X_{nex}=\frac{e^{X_{i}}}{\sum{e^{X_{i}}}} Xnex=eXieXi

    5.4、boxcox变换

    下源自百度百科:
    在这里插入图片描述
    boxcox变换主要是降低数据的偏度,通常回归模型残差非正态或异方差的时候,会选择对y做boxcox变换,降低y的偏度,让y更接近正态。具体的,我以后如果写到回归或boxcox回归,和读者同学一起探讨。

    6、结语

    以上,及我个人对数据预处理中标准化和归一化的一些理解和说明。

    展开全文
  • 人工智能标准化白皮书(2018版).pdf

    千次下载 2018-01-23 20:44:55
    人工智能标准化白皮书(2018版),人工智能标准化白皮书(2018版)
  • 数据标准化/归一化normalization

    万次阅读 2018-10-05 08:22:40
    这里主要讲连续型特征归一的常用方法。 连续型特征还有一种处理方式是,先分桶/分箱(如等频/等距的分)[待写]进行离散后再使用离散数据的处理方法。 离散数据处理参考[数据预处理:独热编码(One-Hot ...

    http://blog.csdn.net/pipisorry/article/details/52247379

    这里主要讲连续型特征归一化的常用方法。

    连续型特征还有一种处理方式是,先分桶/分箱(如等频/等距的分)[待写]进行离散化后再使用离散数据的处理方法。

    离散数据处理参考[数据预处理:独热编码(One-Hot Encoding)]。

    基础知识参考:

    [均值、方差与协方差矩阵]

    [矩阵论:向量范数和矩阵范数]

    数据的标准化(normalization)和归一化

        数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。

        目前数据标准化方法有多种,归结起来可以分为直线型方法(如极值法、标准差法)、折线型方法(如三折线法)、曲线型方法(如半正态性分布)。不同的标准化方法,对系统的评价结果会产生不同的影响,然而不幸的是,在数据标准化方法的选择上,还没有通用的法则可以遵循。

    其中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上。

    归一化的目标

    1 把数变为(0,1)之间的小数
            主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速,应该归到数字信号处理范畴之内。
    2 把有量纲表达式变为无量纲表达式
            归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。 比如,复数阻抗可以归一化书写:Z = R + jωL = R(1 + jωL/R) ,复数部分变成了纯数量了,没有量纲。
    另外,微波之中也就是电路分析、信号系统、电磁波传输等,有很多运算都可以如此处理,既保证了运算的便捷,又能凸现出物理量的本质含义。

    归一化后有两个好处

    1. 提升模型的收敛速度

    如下图,x1的取值为0-2000,而x2的取值为1-5,假如只有这两个特征,对其进行优化时,会得到一个窄长的椭圆形,导致在梯度下降时,梯度的方向为垂直等高线的方向而走之字形路线,这样会使迭代很慢,相比之下,右图的迭代就会很快(理解:也就是步长走多走少方向总是对的,不会走偏)


    2.提升模型的精度

    归一化的另一好处是提高精度,这在涉及到一些距离计算的算法时效果显著,比如算法要计算欧氏距离,上图中x2的取值范围比较小,涉及到距离计算时其对结果的影响远比x1带来的小,所以这就会造成精度的损失。所以归一化很有必要,他可以让各个特征对结果做出的贡献相同。

        在多指标评价体系中,由于各评价指标的性质不同,通常具有不同的量纲和数量级。当各指标间的水平相差很大时,如果直接用原始指标值进行分析,就会突出数值较高的指标在综合分析中的作用,相对削弱数值水平较低指标的作用。因此,为了保证结果的可靠性,需要对原始指标数据进行标准化处理。

        在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。数据无量纲化处理主要解决数据的可比性。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。

    从经验上说,归一化是让不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。

    3. 深度学习中数据归一化可以防止模型梯度爆炸。

    数据需要归一化的机器学习算法

    需要归一化的模型:

            有些模型在各个维度进行不均匀伸缩后,最优解与原来不等价,例如SVM(距离分界面远的也拉近了,支持向量变多?)。对于这样的模型,除非本来各维数据的分布范围就比较接近,否则必须进行标准化,以免模型参数被分布范围较大或较小的数据dominate。
            有些模型在各个维度进行不均匀伸缩后,最优解与原来等价,例如logistic regression(因为θ的大小本来就自学习出不同的feature的重要性吧?)。对于这样的模型,是否标准化理论上不会改变最优解。但是,由于实际求解往往使用迭代算法,如果目标函数的形状太“扁”,迭代算法可能收敛得很慢甚至不收敛。所以对于具有伸缩不变性的模型,最好也进行数据标准化。

            有些模型/优化方法的效果会强烈地依赖于特征是否归一化,如LogisticReg,SVM,NeuralNetwork,SGD等。

    不需要归一化的模型:

        (0/1取值的特征通常不需要归一化,归一化会破坏它的稀疏性。)

        有些模型则不受归一化影响,如DecisionTree。

        ICA好像不需要归一化(因为独立成分如果归一化了就不独立了?)。

        基于平方损失的最小二乘法OLS不需要归一化。

    [线性回归与特征归一化(feature scaling)]

    皮皮blog

     

     

    常见的数据归一化方法

    最常用的是 min-max标准化 和 z-score 标准化。

    min-max标准化(Min-max normalization)/0-1标准化(0-1 normalization)/线性函数归一化/离差标准化

    是对原始数据的线性变换,使结果落到[0,1]区间,转换函数如下:

    其中max为样本数据的最大值,min为样本数据的最小值。

    def Normalization(x):
        return [(float(i)-min(x))/float(max(x)-min(x)) for i in x]

    如果想要将数据映射到[-1,1],则将公式换成:

    x* = x* * 2 -1

    或者进行一个近似

    x* = (x - x_mean)/(x_max - x_min), x_mean表示数据的均值。

    def Normalization2(x):
        return [(float(i)-np.mean(x))/(max(x)-min(x)) for i in x]

    这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

    z-score 标准化(zero-mean normalization)

    最常见的标准化方法就是Z标准化,也是SPSS中最为常用的标准化方法,spss默认的标准化方法就是z-score标准化。

    也叫标准差标准化,这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。

    经过处理的数据符合标准正态分布,即均值为0,标准差为1,注意,一般来说z-score不是归一化,而是标准化,归一化只是标准化的一种[lz]。

    其转化函数为:

    x* = (x - μ ) / σ

    其中μ为所有样本数据的均值,σ为所有样本数据的标准差。

    z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。该种标准化方式要求原始数据的分布可以近似为高斯分布,否则效果会变得很糟糕。

    标准化的公式很简单,步骤如下

      1.求出各变量(指标)的算术平均值(数学期望)xi和标准差si ;
      2.进行标准化处理:
      zij=(xij-xi)/si
      其中:zij为标准化后的变量值;xij为实际变量值。
      3.将逆指标前的正负号对调。
      标准化后的变量值围绕0上下波动,大于0说明高于平均水平,小于0说明低于平均水平。

     
    1. def z_score(x, axis):

    2. x = np.array(x).astype(float)

    3. xr = np.rollaxis(x, axis=axis)

    4. xr -= np.mean(x, axis=axis)

    5. xr /= np.std(x, axis=axis)

    6. # print(x)

    7. return x

    为什么z-score 标准化后的数据标准差为1?

    x-μ只改变均值,标准差不变,所以均值变为0

    (x-μ)/σ只会使标准差除以σ倍,所以标准差变为1

    这两种最常用方法使用场景:

    1、在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,第二种方法(Z-score standardization)表现更好。

    2、在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用第一种方法或其他归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围。
    原因是使用第一种方法(线性变换后),其协方差产生了倍数值的缩放,因此这种方式无法消除量纲对方差、协方差的影响,对PCA分析影响巨大;同时,由于量纲的存在,使用不同的量纲、距离的计算结果会不同。而在第二种归一化方式中,新的数据由于对方差进行了归一化,这时候每个维度的量纲其实已经等价了,每个维度都服从均值为0、方差1的正态分布,在计算距离的时候,每个维度都是去量纲化的,避免了不同量纲的选取对距离计算产生的巨大影响。
    [再谈机器学习中的归一化方法(Normalization Method) ]

    皮皮blog

    log函数转换

    通过以10为底的log函数转换的方法同样可以实现归一下,具体方法如下:

    看了下网上很多介绍都是x*=log10(x),其实是有问题的,这个结果并非一定落到[0,1]区间上,应该还要除以log10(max),max为样本数据最大值,并且所有的数据都要大于等于1。

    atan函数转换

    用反正切函数也可以实现数据的归一化。

    使用这个方法需要注意的是如果想映射的区间为[0,1],则数据都应该大于等于0,小于0的数据将被映射到[-1,0]区间上,而并非所有数据标准化的结果都映射到[0,1]区间上。

    Decimal scaling小数定标标准化

    这种方法通过移动数据的小数点位置来进行标准化。小数点移动多少位取决于属性A的取值中的最大绝对值。

    将属性A的原始值x使用decimal scaling标准化到x'的计算方法是:
    x'=x/(10^j)
    其中,j是满足条件的最小整数。
    例如 假定A的值由-986到917,A的最大绝对值为986,为使用小数定标标准化,我们用每个值除以1000(即,j=3),这样,-986被规范化为-0.986。
    注意,标准化会对原始数据做出改变,因此需要保存所使用的标准化方法的参数,以便对后续的数据进行统一的标准化。

    Logistic/Softmax变换

    [Sigmod/Softmax变换 ]

    模糊量化模式

    新数据=1/2+1/2sin[派3.1415/(极大值-极小值)*(X-(极大值-极小值)/2) ] X为原数据

    皮皮blog

     

    数据标准化/归一化的编程实现

    python库实现和调用

    [Scikit-learn:数据预处理Preprocessing data ]

    from: http://blog.csdn.net/pipisorry/article/details/52247379

    --------------------- 本文来自 -柚子皮- 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/pipisorry/article/details/52247379?utm_source=copy

    展开全文
  • 数据标准化处理

    千次阅读 2020-12-20 21:52:48
    一、标准分数标准分数(Standard Score,又称z-score、z分数或标准化值),是将集合中的单个数与集合的均值相减的结果除以集合的标准差得到标准化的结果,该方法类似于正态分布的标准化转换,转换函数为:Z=(x-μ)/σ...
  • 标准化和归一化的区别

    万次阅读 多人点赞 2019-08-20 18:47:37
     归一是线性模型做数据预处理的关键步骤,比如LR,非线性的就不用归一了。  归一就是让不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。 缺点:这种方法有个缺陷就是当有新数据加入...
  • spss 如何进行数据标准化_spss原始数据标准化_spss数据标准化处理SPSS计算运行过程中会自行标准化的,如果想保存标准化后的数据文件,点击Analyze–>descriptive statistics–>descriptives中勾选“save ...
  • 使用 Python 进行数据预处理的标准化

    千次阅读 2021-07-17 10:34:22
    标准化和规范化是机器学习和深度学习项目中大量使用的数据预处理技术之一。 这些技术的主要作用 以类似的格式缩放所有数据,使模型的学习过程变得容易。 数据中的奇数值被缩放或归一化并且表现得像数据的一部分。 ...
  • 文章目录内容介绍标准化&归一化红酒数据集进行标准化&归一化标准化处理对PCA主成分分析的影响 内容介绍 本章节为 特征标准化 处理总结,其中 等内容。 本专栏介绍关于数据分析工作中常用的 使用Python进行...
  • 数据标准化.归一化处理

    千次阅读 2021-01-11 19:40:16
    数据的标准化在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。。处理主要包括数据两个方面。处理主要解决数据问题,对不同性质指标直接加总不能正确反映不同作用力的...
  • 第1章 多维数据输入时遇到的困境(为什么要标准化、规范化数据集) 1.1 多维输入的困境 在现实生活中,一个目标变量(Yi)可以认为是由多维特征变量(x)影响和控制的。如上图左图中的X1_i,X2_i,X3_i ,其中i = ...
  • 重温归一化(MinMaxScaler)和标准化(StandardScaler)

    万次阅读 多人点赞 2019-12-30 13:37:17
    最近做一个时空序列预测的一个问题,用到了数据归一化和标准化,之前一直想花点时间看一下这俩的区别究竟是啥? 现在参考了几篇博文,加上自己的一些理解,来具体的总结总结。 数据的归一化是无量纲化,也就是忽略...
  • 何为规范化、标准化、精细化管理

    千次阅读 2020-12-22 13:36:32
    一、规范管理规范管理就是从企业生产经营系统的整体出发,对各环节输入的各项生产要素、转换过程、产出等制订制度、规程、指标等标准(规范),并严格地实施这些规范,以使企业协调统一地运转。实行规范管理在...
  • 几种常用数据标准化方法

    万次阅读 2021-01-14 14:49:03
    也是SPSS中最为常用的标准化方法,也叫标准差标准化, z-score 标准化 这种方法基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。将A的原始值x使用z-score标准化到x’。 z-score标准化...
  • 数据归一化和标准化的区别

    千次阅读 2018-11-26 15:54:53
    声明:内容来源于... ... 这里主要讲连续型特征归一的常用方法。离散参考[数据预处理:独热编码(One-Hot Encoding)]。 基础知识参考: [均值、方差与协方差矩阵...
  • 标准化,归一化与训练-测试集数据处理

    千次阅读 多人点赞 2021-02-20 12:11:01
    标准化,归一化与训练-测试集数据处理1. 标准化,归一化的区别数据预处理的归一化手段应该如何应用到训练集,测试集和验证集中?问题:回答1:回答2问题3回答1回答2问题4回答1 1. 标准化,归一化的区别 作者:宝珠...
  • 数据变换-归一化与标准化

    千次阅读 2021-02-04 19:55:42
    一般在机器学习的模型训练之前,有...数据变换的方法有很多,比如数据平滑,数据聚集,数据概化,数据规范和属性构造等。本篇文章主要介绍数据规范,这是一种比较常用,也比较简单的方法。数据规范是使属性数...
  • 我在看关于KNN的算法介绍里面的时候,提到欧氏距离的时候,说它的缺点的时候,提到了方差,提到了归一化、标准化。如果你也没明白,希望通过本文能理解这个含义。我对上来就直接贴一个数学公式感到头大。 一 期望值...
  • 【R语言】数据标准化处理

    万次阅读 多人点赞 2020-06-10 11:29:20
    1、标准化——数据处理 preProcess(x, method = c("center", "scale"), thresh = 0.95, pcaComp = NULL, na.remove = TRUE, k = 5, knnSummary = mean, outcome = NULL, fudge = 0.2, numUnique = 3, ...
  • [机器学习] 数据特征 标准化和归一化

    万次阅读 多人点赞 2018-07-24 11:51:38
    一、标准化/归一化定义 归一化和标准化经常被搞混,程度还比较严重,非常干扰大家的理解。为了方便后续的讨论,必须先明确二者的定义。 归一化 就是将训练集中某一列数值特征(假设是第i列)的值缩放到0和1之间...
  • 对于量化研究而言,拿到一份基础数据,首先需要对数据做预处理,以便于更好的探究数据规律,基于不同目标有不同处理环节,其中去极值、标准化、中性化这三点经常被放在一起讨论。整理网络资料,理解如下。 去极值 ...
  • 下面是一些常用的归一化、标准化的方法: 离差标准化 log归一化 标准化 比例归一化 反正切归一化 代码示例 import numpy as np def min_max_normalization(value): """归一化,也称离差标准化 公式:(原始值-...
  • 常用的数据标准化方法有最大最小归一化、均值方差标准化、小数定标法、定量特征二值化等。其中,均值方差标准化是一种将数据转化为标准正态分布的标准化方法。在回归模型中,服从正态分布的自变量和因变量往往对应着...
  • 数据标准化的方法有很多种,常用的有"最小-最大标准化"、"Z-score标准化"和"按小数定标标准化"等。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评...
  • 数据标准化【0~1标准化和Z标准化

    千次阅读 2020-05-29 15:37:58
    数据标准化 一、Z标准化 经过处理后,数据的均值为0,标准差为1。 二、0~1标准化 1.自定义函数: """ 1.0~1标准化:也称离差标准化,它是对原始数据进行线性变换, 使结果落到 [0,1] 区间. X=(x - min)/(max -...
  • 归一化z-score标准化

    千次阅读 2021-02-05 02:28:55
    z-score标准化z-score标准化是将数据按比例缩放,使之落入一个特定区间。 要求:均值 μ = 0 ,σ = 1标准差公式:imagez-score标准化转换公式:image归一化归一化:把数变为(0,1)之间的小数归一化公式:image这里...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,346,963
精华内容 938,785
关键字:

标准化