在开始之前,先举一个小例子。假设小明考了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. 我的世界服务器怎么显示腐竹来了,我的世界腐竹开服必看manu权限组教程
  2. 自定义JAVA注解_深入理解Java:自定义java注解
  3. git-ssh-keygen
  4. 用html制作篮球网页,篮球网站的设计与实现).doc
  5. 树(5)-----判断两颗树一样或者一棵树是否是另外一颗的子树
  6. 创建对象属性赋值的内存理解
  7. java中的命令行参数_Java中的命令行参数
  8. 转:Ajax调用Webservice和后台方法
  9. ThinkPHP5零食商城系统(前后台)
  10. kux格式怎么转换成mp3_kux格式怎么转换?kux完美转换成MP3音频的技巧分享
  11. 【学习笔记】信息系统项目管理-项目采购管理-合同分类
  12. VSCode 居然是个娱乐软件?让你 high 到爆的几款插件
  13. 【python】数据分析实战:分析全国旅游景点数据,暑假还不知道去哪玩的看过来
  14. cent7虚拟机镜像_centos7.3系统下载
  15. 2022年cfa一级二级三级网课资源
  16. RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the
  17. 6.C语言常用的控制语句有哪些,C语言重要知识点总结【6】:C语言9种控制语句(详解)...
  18. spark官网配套的代码数据在哪儿
  19. Java并发编程——this引用逸出(this Escape)
  20. 基于结构光的相移法三维重建

热门文章

  1. 如何提升自己的网站打开速度
  2. mimax 刷原生android,小米手机想爽刷原生安卓?不愁!
  3. 开源私有云盘python_搭建Windows版Seafile开源私有云盘
  4. 千锋php 靠谱吗,千锋PHP学员心得 长久的坚持不懈才能接近成功
  5. 劳动与社会保障法-作业
  6. 掌握这6个可视化图表,小白也能轻松玩转数据分析
  7. 转载一篇过来人谈的大学期间关于课外学习的意见lt;出自左飞老师笔记gt;
  8. 关于DDS文件格式的说明
  9. 每日新闻:国美与车势达成独家战略合作;腾讯Tsrc年度峰会破界召开;日本将允许高度自动驾驶车上路;“开源芯片”是芯片发展的新潮流...
  10. 嵌入式Linux入门-手把手教你初始化SDRAM(附代码)