• R实战 第九篇:数据标准化


    数据标准化处理是数据分析的一项基础工作,不同评价指标往往具有不同的量纲,数据之间的差别可能很大,不进行处理会影响到数据分析的结果。为了消除指标之间的量纲和取值范围差异对数据分析结果的影响,需要对数据进行标准化处理,就是说,把数据按照比例进行缩放,使之落入一个特定的区域,便于进行综合分析。

    在继续下文之前,先解释三个个术语:

    (1)所谓量纲,简单来说,就是说数据的单位;有些数据是有量纲的,比如身高,而有些数据是没有量纲的,例如,男女比例。无量纲化,是指去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或者量级的指标能够进行和加权。

    (2)数据的标准化是指将数据按照比例缩放,使之落入一个特定的区间。

    (3)归一化是数据标准化中最简单的方式,目的是把数变为(0,1)之间的小数,把有量纲的数据转换为无量纲的纯数量。

    常用的归一化方法主要有离差标准化和标准差标准化,r的scale()可以实现标准差标准化,也可以指定标准化之后数据的均值和标准差。

    一,离差标准化

    离差标准化是对原始数据进行线性变化,使数值映射到[0,1]区间中,转换公式是:

    离差标准化保留了原来数据中存在的关系,是消除量纲和数据取值范围对数据分析产生影响的最简单方法,缺点是如果数据集中,且某个数值很大,那么标准化之后大部分值会接近于0,并且不会相差很大。

    二,标准差标准化

    经过该方法处理的数据的均值是0,标准差是1,转化公式是:

    这种方法基于原始数据的均值(mean)和标准差(standard deviation)对数据进行标准化,是用的最多的数据的标准化方法,但是,均值和标准差受离群点的影响很大。

    三,scale()标准化

    R语言通常使用scale()函数对矩阵或数据框按列对数据进行标准化:

    scale(x, center = TRUE, scale = TRUE)

    参数注释:x是数值矩阵,当center=TRUE时,为数据对象x按列进行中心化;当scale=TRUE时,为数据对象x按列进行标准化。

    • 中心化是把每个数据减去均值;
    • 标准化是在中心化后的数据基础上再除以数据的标准差;

    默认情况下,center=TRUE,scale=TRUE,scale()函数首先把一组数的每个数都减去这组数的平均值,然后除以这组数的均方根。

    如果scale=TRUE,而center=FALSE,那么,scale()函数不会把一组数中的每个数减去平均值,而直接处以这组数据的均方根。

    1,scale()函数的中心化和标准化

    例如,向量v是数值向量,均值是 3,标准差是 1.581139:

    v <- c(1,2,3,4,5)
    v.mean <- mean(v)
    s <- sd(v)

    使用scale()函数进行中心化操作,每个向量原始都减去均值3:

    > scale(v,center=TRUE,scale=FALSE)
         [,1]
    [1,]   -2
    [2,]   -1
    [3,]    0
    [4,]    1
    [5,]    2
    attr(,"scaled:center")
    [1] 3

    使用scale()函数进行标准化操作,先减去均值,后除以均方根:

    > scale(v,center=TRUE,scale=TRUE)
               [,1]
    [1,] -1.2649111
    [2,] -0.6324555
    [3,]  0.0000000
    [4,]  0.6324555
    [5,]  1.2649111
    attr(,"scaled:center")
    [1] 3
    attr(,"scaled:scale")
    [1] 1.581139

    2,scale()函数的均值和标准差 

    默认情况下,使用scale()函数对矩阵或数据框的指定列进行均值为0,标准差为1的标准化操作:

    mydata <-scale(mydata)

    要对每一列进行任意均值和标准差的标准化,可以使用以下代码,其中M是均值,SD是标准差:

    mydata <scale(mydata) *SD + M

     

    参考文档:

  • 相关阅读:
    Python基础——for/while循环
    Python基础——条件判断
    Python基础——字符串
    Python基础——输出[print()]与输入[input()]
    Python编程软件的安装与使用——Windows、Linux和Mac
    Python数据结构之三——dict(字典)
    微信【跳一跳】 opencv视觉识别 + 物理外挂
    tensorflow安装: win10 + RTX2060 + tensorflow1.15.0+ cuda10.0 + VScode
    FreeRTOS 任务与调度器(2)
    FreeRTOS 任务与调度器(1)
  • 原文地址:https://www.cnblogs.com/ljhdo/p/4899086.html
Copyright © 2020-2023  润新知