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

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

(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(,,,,)
v.mean <- mean(v)
s <- sd(v)

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

> scale(v,center=TRUE,scale=FALSE)
[,]
[,] -
[,] -
[,]
[,]
[,]
attr(,"scaled:center")
[]

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

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

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

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

mydata <-scale(mydata)

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

mydata <scale(mydata) *SD + M

 

参考文档:

最新文章

  1. linux之awk、sed命令
  2. 在node.js中使用mongose模块
  3. 链接测试工具xenu link sleuth的使用
  4. Android学习笔记之ConnectivityManager+NetWorkInfo
  5. C# 通过Get、Post、Soap调用WebService的方法
  6. 在newegg工作的这两个月
  7. projecteuler----&amp;gt;problem=8----Largest product in a series
  8. Android开发教程
  9. redis基础知识
  10. Python百题计划
  11. 【Linux】常见基础命令之文件操作
  12. redis使用总结(二)(jedis使用)
  13. html概述和html基本结构:
  14. jQuery -- 监听input、textarea输入框值变化
  15. Servlet基本_セッション属性
  16. Windows桌面.exe程序安装、卸载、升级测试用例
  17. github git 无法读取远程仓库或无权限
  18. 【转】十个经典的C开源项目代码
  19. 考勤助手——基于CS三层结构的子系统设计
  20. Vue设置导航栏为公共模块并在登录页不显示

热门文章

  1. MySQL复制 slave_exec_mode 参数IDEMPOTENT 说明
  2. Python学习--Selenium模块学习(2)
  3. October 22nd, 2017 Week 43rd Sunday
  4. October 18th 2017 Week 42nd Wednesday
  5. Q矩阵输出
  6. 【2017下集美大学软工1412班_助教博客】团队作业4——Alpha冲刺日志公示
  7. Win10无法启动软件提示MSVCP110.dll丢失
  8. Tomcat设置虚拟目录的方法, 不修改server.xm
  9. 1036. [ZJOI2008]树的统计【树链剖分】
  10. oracle kill 锁