在开始之前,先举一个小例子。假设小明考了80分,小华也考了80分。但前者是百分制,后者150是满分。如果我们把从这两个渠道收集上来的数据进行集成、挖掘。无论使用什么算法,结果也不是正确的。因为这两个分数,代表的含义完全不同。所以说,有时候数据变换比算法选择更重要。数据错了,算法再正确也是错的。那么,如何将不同渠道的数据进行统一呢?这就用到了数据变化。

众所周知,在数据变换前,我们需要先对字段进行筛选,然后对数据进行探索和相关性分析,接着是选择算法模型,然后针对算法模型对数据的需求进行数据变换,从而完成数据挖掘前的准备工作。

从这个流程可以看出,数据变换是数据准备的重要环节。它可以通过 数据平滑、数据聚集、数据概化和规范化等方式,将数据转换成适用于数据挖掘的形式。

一、常见的变换方法

数据平滑:去除数据中的噪声,将连续数据离散化。可采用分箱、聚类和回归的方式进行数据平滑。

数据聚集:对数据进行汇总。比如SQL 中的 Max() 、Sum() 等函数。

数据概化:将数据由较低的概念抽象成较高的概念,减少数据复杂度。即用更高的概念替代更低的概念。比如:上海、杭州、深圳可以概化为中国。

数据规范化:使属性数据按比例缩放,这样就将原来的数值映射到一个新的特定区域中,常用的方法有:Min-Max规范化、Z-score规范化、按小数定标规范化等。

属性构造:构造出新的属性并添加到属性集中。会用到特征工程的知识,因为通过属性与属性的连接构造新的属性,其实就是特征工作。比如:数据表中统计每个人的英语、语文和数学成绩,可以构造一个“总和”这个属性,来作为新属性。这样“总和”这个属性就可以用到后续的数据挖掘计算中。

以上这些变换方法中,最简单易用的就是对数据进行规范化处理。下面,就详细说说如何对数据进行规范化处理。

二、数据规范化的几种方法

在讲具体的方法前,插一句,下面的方法,都会用 Python 的 SciKit-Learn 库来实现。

那么,什么是 SciKit-Learn 呢?它是 Python 的重要机器学习库,它帮我们封装了大量的机器学习算法,比如分类、聚类、回归、降维等。此外,它也包括了数据变换模块。

1、Min-Max 规范化

Min-max 规范化方法:将原始数据变换到[0,1]的空间中。让原始数据投射到指定的空间[min, max]。用公式表示就是:新数值 =(原数值 - 极小值)/(极大值 - 极小值)。

在 SciKit-Learn 里有个函数 MinMaxScaler 是专门做这个的,它允许我们给定一个最大值与最小值,然后将原数据投射到[min, max]中。默认情况下[min,max]是[0,1],也就是把原始数据投放到[0,1]范围内。

# coding:utf-8

from sklearn import preprocessing

import numpy as np

# 初始化数据,每一行表示一个样本,每一列表示一个特征

x = np.array([

[0.,-3.,1.],

[3.,1.,2.],

[0.,1.,-1.]

])

# 将数据进行 [0, 1] 规范化

min_max_scaler = preprocessing.MinMaxScaler()

min_max_x = min_max_scaler.fit_transform(x)

print(min_max_x)输出结果

2、Z-Score 规范化

开篇中讲到的例子,虽然小明、小华都是80分,但是两者的80分代表完全不同的含义。那么,如何用相同的标准来比较 小明 和 小华的成绩呢?Z-Score就可以来解决这个问题。

Z-Score 的方法:新数值 = (原数值 - 均值)/ 标准差。

假设 小明 所在的班级平均分为 80,标准差为 10。小华 所在的班级平均分为 120,标准差为 100。那么 小明 的新数值 =(80-80)/10=0,小华 的新数值 =(80-120)/100=-0.4。那么在 Z-Score 标准下,小明 的成绩会比 小华 的成绩好。

在 SciKit-Learn 库中使用 preprocessing.scale() 函数,可以直接将给定数据进行 Z-Score 规范化。

这个结果实际上就是将每行每列的值减去了平均值,再除以方差的结果。我们看到 Z-Score 规范化将数据集进行了规范化,数值都符合均值为 0,方差为 1 的正态分布。

因此,我们能看到 Z-Score 的优点是算法简单,不受数据量级影响,结果易于比较。不足在于,它需要数据整体的平均值和方差,而且结果没有实际意义,仅是用于比较!!!。

3、小数定标规范化

小数定标规范化,就是通过移动小数点的位置类进行规范化。小数点移动多少位取决于属性A的取值中的最大绝对值。

比如,新数值A的取值范围是 -999 到 88,那么最大绝对值是 999。小数点就会移动3位,即新数值=原数值/100,那么A的取值范围,就被规范化到[-0.999,0.088]。使用 numpy 实现

最后,再强调一次,数据挖掘中数据变换比算法选择更重要。在上面考试成绩的例子中,假如我们要让数据满足一定的规律,达到规范性的要求,便于挖掘。这就是数据变换的作用。如果不做变换的话,要不就是维数过多,增加了计算的成本,要不就是数据过于集中,很难找到数据之间的特征。

光滑噪声数据常用的方法_几种常见的数据变换方法相关推荐

  1. java序列化的方法_【Java常见序列化与反序列方法总结】

    人和电脑在很多方面都是十分相似的,大脑可以看成电脑主机,五官/身体等表面器官就是显示器.鼠标等外设.这篇文章就是想把计算机跟人做类比YY一下序列化和反序列化的机制.用途. 如果你是初学者,心里肯定会问 ...

  2. excel找到对应数据的列指标_三种方式制作数据地图

    数据地图,因为地理信息的加持,信息丰富,直观明显,广泛地应用于多个行业,数据分析必备利器. 方式一:通过Excel制作数据地图 本文大篇幅在介绍这种方式的具体操作方法,共分为四个步骤.概括来说其主要通 ...

  3. mysql四种常用的索引_四种常见的索引类型

    主键索引:数据记录里面不能有 null,数据内容不能重复,在一张表里面不能有 多个主键索引. 普通索引:使用字段关键字建立的索引,主要是提高查询速度 唯一索引:字段数据是唯一的,数据内容里面能否为 n ...

  4. mysql数据库有几种连接方法_几种常见的数据库连接方法

    一.连接Access数据库 1.使用已有DSN的连接字符串进行连接(ODBC) //导入命名空间 using System.Data.Odbc; protected void Page_Load(Ob ...

  5. 测试案例6种编写方法_一种编写测试的好方法

    测试案例6种编写方法 测试. 我最近一直在考虑测试. 作为我对各种项目所做的代码审查的一部分,我已经看到了数千行未经测试的代码. 这不仅是测试覆盖率统计数据指出这一点的情况,更是该项目中根本没有任何测 ...

  6. 提高sql性能的方法_三种提高T-SQL性能的方法

    提高sql性能的方法 介绍 (Introduction) When customers used to ask for advice to solve some T-SQL Problem, they ...

  7. 低压抽屉柜常见故障处理方法_低压开关柜的常见故障及处理方法

    低压开关柜可分为GCS型低压开关柜.GCK抽出式开关柜.GGD低压固定式开关柜.组装式低压开关柜等.下面本文就给大家介绍下低压开关柜常见故障以及其使用的方法有哪些?有兴趣的小伙伴可以和本小编一起来看下 ...

  8. runtime 分类结构体_几种常见滚动轴承的分类方法

    一.按滚动轴承结构类型分类 1. 轴承按其所能承受的载荷方向或公称接触角的不同,分为: ①向心轴承----主要用于承受径向载荷的滚动轴承,其公称接触角从0到45.按公称接触角不同,又分为:径向接触轴承 ...

  9. java中课桌的方法_一种书写课桌的制作方法

    本发明涉及学校用品技术领域,具体涉及一种书写课桌. 背景技术: 学生课桌的设计主要仍是针对传统领域,普通课桌作为学生课堂学习期间放置书本文具.做作业等方面的工具,但是在课桌上进行书写时,往往会在纸上造 ...

  10. pet缩聚流程图_一种PET塑料的制备方法与流程

    本发明涉及一种高分子材料技术领域,尤其涉及一种PET塑料的制备方法. 背景技术: 聚对苯二甲酸乙二醇酯俗称涤纶树脂,学名为PET,由对苯二甲酸二甲酯与乙二醇酯交换或以对苯二甲酸与乙二醇酯化先合成对苯二 ...

最新文章

  1. JframeMaxSize
  2. 一个Java对象到底占用多大内存?
  3. CEO 赠书 | 节省 50% 的人生,终止“瞎忙”式勤奋
  4. dhcp是哪一层的协议_OSI各个分层分别负责哪些功能?有哪些主要协议?涉及到哪些设备?...
  5. MDK KEIL 烧录STM32下载错误:Flash Timeout.Reset the Target and try it again.解决办法(芯片解锁 解除读报护)
  6. 斜面上的根骨骼运动以及刚体测试
  7. Airflow使用入门指南
  8. 用框图说明计算机控制系统,计算机控制系统试题
  9. 快速实现word、excel、ppt、txt等办公文件在线预览功能(Java版)
  10. NeHe OpenGL教程 01 创建OpenGL窗口
  11. 关于Sentaurus的日常(一)(Basics)
  12. STM32 USB Host 鼠标和键盘驱动 -- 原创
  13. Canal.deployer 启动报错说CHARACTER SET 'utf8' COLLATE 'utf8_unico', expect null,rkdown编辑器
  14. 20190919-4 单元测试 结对
  15. Vue中JSX的基本用法
  16. L.G.Hassebrook团队结构光论文记录
  17. RTOS的基本概念与线程基础知识
  18. python2(基本)
  19. revit二次开发——建连续刚构桥2(带平纵曲线)
  20. Java 商品抢购系统设计,实现与优化

热门文章

  1. 【中级】2017项目集成管理工程师备考第五章-立项管理(上)
  2. 软件测试难不难?不是计算机专业也能学吗?
  3. 网站文章采集与伪原创技巧
  4. 泰拉瑞亚试图加载不正确的_泰拉瑞亚Switch中文版将在12月19日发售|宝可梦 剑/盾大量细节公布 自动存档可关经验平均分配等...
  5. 解决微信小程序不在request合法域名列表中的问题
  6. 使用百度ai识别身份证信息
  7. 分享下nas使用技巧,以及最简单的远程开机(用HS-200S做演示)
  8. html钢琴谱播放器,iPad版五线谱播放器《钢琴谱大全》评测
  9. 权益证明,私钥攻击与无法伪造的奢侈
  10. java.sql.SQLException: Access denied for user ‘crm‘@‘localhost‘ (using password: YES)