3.数据预处理(上)
所谓凡事预则立,不预则废。数据预处理过程是一个数据分析的基础,数据预处理主要分成三大部分:
- 提取特征与数据类型转化
从异构的或者半结构化的原始数据中提取可以输入到模型算法中的数据。 - 数据清洗
去除明显的错误数值、去空值、数据归一化等。 - 数据的简化和变换
有些数据有冗余,进行必要的数据缩减和变换可以提高效率。
结合课上的理论部分,笔者结合sklearn机器学习库中的一些常用的预处理过程代码,予以说明。
特征提取与数据类型转化
特征提取
针对不同的数据,特征提取方法差异较大,这里不做统一说明,之后如果遇到会单独介绍。
数据类型转化
在第一章中介绍了若干数据类型,大部分数据都是异构的,即会有多种数据类型并存,为了便于处理,有必要对不同的数据类型进行统一,使之可以使用同一套处理办法。
- 数值型转化为类别型
划分区域:划分间隔区间,原始数据落入哪个区间即归入哪一类。
问题:数据样本会集中落入某个类别,某些类别可能包含的样本很少。因此如何划分间隔是重点。
- 等宽采样:等间隔划分区域
- 等log采样:按照对数坐标等间隔采样,例如 [1,a][a,a2][a2,a3] ,这样可以压缩坐标轴,照顾到数据取值较大情况,类似于控制论中的波特图(Bode)的办法。
- 等深采样:为了使样本尽可能均匀归入各个类别,将原始数据先排序,然后平均划分到指定个数的类别中。
- 类别型转化为数值型
- 二值化:处理二类问题。
- 指示变量法:处理多个类别,每个类别用一个属性代表,如果数据项属于这个类别,则在这个属性上标1,最后形成一个向量。该向量只有一个位置为1,表示属于该类,其余为0。
- 文本转化为数值型
这里做一点拓展,主要是结合了自然语言处理课上的东西。建立一个单词数量为V的词表,每一篇文档都用一个长度为V的向量表示,向量的每一个维度上代表了词表中的一个单词。
- 伯努利模型:用1-0表示该文本有或没有这个单词
- 多项式模型:在每个维度上记录这个单词在该篇文档中出现的频率
- TF-IDF:与多项式模型类似,在多项式模型的基础上,除了统计词频,还要统计逆文档频率,计算公式为