数据是多种多样的,包括数字、文本、图像、音频、视频。本文介绍数字类型数据预处理方法。
数据预处理对于模型的准确度至关重要,数据预处理过程需要结合领域知识和分析目标,分析数据中存在的问题并采取有效的处理方法。
数字类型数据
数字类型数据包括分类型、数值型。
分类类型数据
分类变量是说明事物类别的名称,是有一定个数取值的变量类型,分类变量包括无序类型和有序类型。例如性别就是一个无序分类变量,它的取值为男或女;等级是一个有序分类变量,它的取值为一级、二级、三级…
分类类型数据的编码方法
序数法:用整数编码每个类别,如果分类变量是有序型,那么对应的数值也是有序的,如果分类数据是无序的,那么每个类别对应的数值是随机的,但是整数本身属于有序数值,有大小之分,用于编码无序的分类数据显然存在不合理性。(类别数据的编码方法的合理性也取决于解决问题的模型,比如决策树、朴素贝叶斯,这两种分类方法分析的是数据出现的次数,不关心数据值的大小,所以序数法是可行的;而像基于距离计算的方法,SVM、KNN等序数法并不适用)
One-Hot法:又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候,其中只有一位有效。例如类别数据[中国,美国,日本],那么中国的编码为1,0,0
二进制法:分类类别数据先按照序数法进行编码,然后将序数转化为二进制编码,将二进制编码拆分成列,这种方法较One-Hot法维度较少,但是维度可解释性差
分箱法:当分类数据类别较多时,One-Hot法生成的特征维度较大,可以通过将类别进行分箱处理,比如城市数据,可以按城市人口,城市规模,城市GDP对城市进行分箱
数值类型数据
数值型变量,数值型变量又分为离散型和连续型。像年龄,身高都属于离散型数值变量,而高频的时序变量可以看成是连续型变量。
数值类型数据预处理
数据预处理包括错误数据处理、空缺值填补和离群点检测。
错误数据处理:针对错误数据需要先识别,然后采取类似空缺值的处理方式。
空缺值填补:(1)忽略,对于空缺值较多的属性只能忍痛忽略了;(2)填补当元组仅有少数属性值缺少,一般要对空缺值进行填补,填补的方式包括人工填补、属性频繁值、属性平均值、属性中位数等;(3)建立模型预测缺失值;(4)插值:线性插值、非线性插值;
离群点(噪声点):离群点是不可以随便以删除方式进行处理的,离群点检测需要结合实际问题进行,对于确认为异常点的数据进行处理,否则将对解决问题产生不利影响,常用的方法包括聚类、滤波等。
数据变换
数据变换包括数据中心化、标准化、降维、白化等。
中心化:新数据=原数据-均值
数据标准化:数据标准化的方法有很多种,常用的有min-max标准化、Z-score标准化等。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。
(1)min-max 标准化
min-max标准化方法是对原始数据进行线性变换。将A的一个原始值x通过min-max标准化映射成在区间[0,1]中的值x',其公式为:新数据=(原数据-极小值)/(极大值-极小值)
(2)z-score 标准化
这种方法基于原始数据的均值和标准差进行数据的标准化。将原始值x使用z-score标准化到x'。z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。其公式为:新数据=(原数据-均值)/标准差(3)对数函数转换
新数据=log10(原数据)
(4)反余切函数转换
新数据=atan(原数据)*2/PI
标准化在0-1之间是统计的概率分布,标准化在-1-+1之间是统计的坐标分布。是否需要对数据进行标准化,取决于具体问题和解决问题的模型、算法,如果计算两个变量的距离,那么值域大的变量将掩盖值域小的变量的重要性,而如果是变量间的线性组合,那么就无需进行数据标准化,有的时候数据标准化是为了便于算法进行模型参数的求解,加速算法的收敛,并不是模型本身对输入的要求。
降维:通过去除变量间的相关性方式减少变量的个数,将变量变换到正交空间,主要方法包括PCA、SVD等。
白化:将降维的正交变量处以各自的特征值,使变量维度的尺度范围相同
数据预处理的python实现可以参考点击打开链接