数据分析实战45讲-13-数据变换

数据变换在数据分析中的角色

  1. 从不同渠道搜集上来的数据代表的含义不完全相同,这是如果进行数据集成、挖掘,就算使用效率再高的算法,结果也不是正确的。
  2. 数据变换比算法选择更重要,数据错了,算法再正确也是错的
  3. 数据变换前,需要对字段进行筛选,然后对数据进行探索性和相关性分析,接着是选择算法模型,然后针对数据的需求进行数据变换,从而完成数据挖掘前的准备工作

常见的变换方式

  1. 数据平滑:去除数据中的噪声,将连续数据离散化。
  2. 数据聚集:对数据进行汇总,可以使用些聚集函数 SUM()
  3. 数据钙化:将数据由较低的概念抽象成较高的概念,减少数据复杂度,即用更高的概念替代更低的概念。
  4. 数据规范化:使属性按比例缩放,将原来的数值映射到一个新的特定区域中。
  5. 属性构造:构造出新的属性并添加到属性集中。

数据规范化的几种方法

  1. Min-max 规范化: 是将原始数据变换到【0,1】的空间中。公式是 新数值 = (原始数值-最小值)/(最大值-最小值)

  2. Z-Score规范化

    • 公式: 新数值 = (原数值-均值)/ 标准差
1
2
3
4
5
假设 A 与 B 的考试成绩都为 80 分,A 的考卷满分是 100 分(及格 60 分),B 的考卷满分是 500 分(及格 300 分)。虽然两个人都考了 80 分,但是 A 的 80 分与 B 的 80 分代表完全不同的含义。

假设 A 所在的班级平均分为 80,标准差为 10。B 所在的班级平均分为 400,标准差为 100。那么 A 的新数值 =(80-80)/10=0,B 的新数值 =(80-400)/100=-3.2。

那么在 Z-Score 标准下,A 的成绩会比 B 的成绩好。

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

  1. 小数定标规范化
    • 公式: 新数值 = 原数值/1000
      小数定标规范化就是通过移动小数点的位置来进行规范化。小数点移动多少位取决于属性A的取值中的最大绝对值
1
举个例子,比如属性 A 的取值范围是 -999 到 88,那么最大绝对值为 999,小数点就会移动 3 位,即新数值 = 原数值 /1000。那么 A 的取值范围就被规范化为 -0.999 到 0.088。

Python的Scikit-Learn库使用