- TensorFlow深度学习应用实践
- 王晓华
- 2849字
- 2021-04-02 04:16:28
4.4 数据的统计学可视化展示
在4.3节中,读者对数据,特别是大数据的处理有了一个基本的认识。通过数据的可视化处理,对数据的基本属性和分布都有了较为直观的理解。但是对于机器学习来说,这里数据需要更多的分析处理,需要用到更为精准和科学的统计学分析。
本节将使用统计学分析对数据进行处理。
4.4.1 数据的四分位
四分位数(Quartile)是统计学中分位数的一种,即把所有数据由小到大排列并分成四等份,处于三个分割点位置的数据就是四分位数。
- 第一四分位数(Q1),又称“下四分位数”,等于该样本中所有数据由小到大排列后第25%的数据。
- 第二四分位数(Q2),又称“中位数”,等于该样本中所有数据由小到大排列后第50%数据。
- 第三四分位数(Q3),又称“上四分位数”,等于该样本中所有数据由小到大排列后第75%的数据。
第三四分位数与第一四分位数的差距又称为四分位距(InterQuartile Range,IQR)。
首先确定四分位数的位置。如果用n表示项数,那么三个分位数的位置分别为:
- Q1的位置:(n+1)×0.25。
- Q2的位置:(n+1)×0.5。
- Q3的位置:(n+1)×0.75。
通过图形表示则如图4-9所示。
图4-9 四分位的计算
从图4-9可以看到,四分位在图形中根据Q1和Q3的位置绘制了一个箱体结构,即根据一组数据5个特征绘制的一个箱子和两条线段的图形。这种直观的箱线图反映出一组数据的特征分布,还显示了数据的最小值、中位数和最大值。
4.4.2 数据的四分位示例
现在回到数据处理中来,这里依旧使用4.3节中的数据集进行数据处理。
首先介绍一下本例中的数据集。本数据集的来源是真实世界中某借贷机构对申请贷款人的背景调查,目的是根据不同借款人的条件,分析判断借款人能否按时归还贷款。一般来说,借款人能否按时归还贷款是所有借贷最为头疼的问题,其中的影响因素很多,判别相对麻烦,判断错误后果也较为严重。通过机器学习,就可以较为轻松地将其转化成一个回归分类问题。
数据集中的数据如图4-10所示。
图4-10 小贷数据集
这个数据集的形式是每一行为一个单独的目标行,使用逗号分割不同的属性;每一列是不同的属性特征,不同列的含义在现实中至关重要,这里不做解释。具体代码如程序4-9所示。
【程序4-9】
首先来看数据的结果:
这一部分是打印出来的计算后的数据头部和尾部,这里为了节省空间,只选择了前6个和最后6个数据。第一列是数据的编号,对数据目标行进行区分,其后是每个不同目标行的属性。
dataFile.describe()方法是对数据进行统计学估计,count、mean、std、min分别求得每列数据的计数、均值、方差以及最小值。最后的几个百分比是求得四分位的数据,具体图形如图4-11所示。
图4-11 小贷数据集的四分位显示
程序中选择第11~16的数据作为分析数据集,从中可以看出,不同的数据列做出的箱体四分位图也是不同的,而部分不在点框体内的数据被称为离群值,一般被视作特异点加以处理。
提示
读者可以多选择不同的目标行和属性点进行分析。
从图4-11可以看出,四分位图是一个以更好、更直观的方式来识别数据中异常值的方法。比起数据处理的其他方式,四分位图能够更有效地让分析人员判断离群值。
4.4.3 数据的标准化
继续对数据进行分析,在进行数据选择的时候可能会遇到某一列的数值过大或者过小的问题,若数据的显示超出其他数据部分较大时则会产生数据图形失真的问题,如图4-12所示。
图4-12 数据超预期的四分位图
因此,需要一个能够对数据进行处理,使其具有共同计算均值的方法,称为数据的标准化处理。
顾名思义,数据的标准化就是将数据根据自身一定的比例进行处理,使之落入一个小的特定区间,一般为(-1,1)之间。这样做的目的是去除数据的单位限制,将其转化为无量纲的纯数值,使得不同单位或量级的指标能够进行比较和加权,其中最常用的就是0-1标准化和Z标准化。
1.0-1标准化(0-1 normalization)
0-1标准化也叫离差标准化,是对原始数据的线性变换,使结果落到[0,1]区间,转换函数如下:
其中,max为样本数据的最大值,min为样本数据的最小值。这种方法有一个缺陷,就是当有新数据加入时可能导致max和min的变化,需要重新定义。
2.Z-score标准化(Zero-mean normalization)
Z-score标准化也叫标准差标准化,经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:
其中,μ为所有样本数据的均值,σ为所有样本数据的标准差。
一般情况下,通过数据的标准化处理后,数据最终落在(-1,1)之间的概率为99.7%,而在(-1,1)之外的数据被设置成-1和1,以便处理,如程序4-10所示。
【程序4-10】
从代码中可以看到,数据被处理为标准差标准化的方法,dataFileNormalized被重新计算并定义,大数值被人为限定在(-1,1)之间,请读者自行运行验证。
提示
程序4-10中所使用的数据被人为修改,请读者自行修改验证。这里笔者不再进行演示。此外,读者可以对数据进行处理,验证更多的标准化方法。
4.4.4 数据的平行化处理
从4.4.2小节可以看到,对于每种单独的数据属性来说,可以通过数据的四分位法进行处理、查找和寻找离群值,从而对其进行分析处理。
但是对于属性之间的横向比较、每个目标行属性之间的比较,使用四分位法则较难判断。因此,为了描述和表现每一个不同目标行之间数据的差异,需要另外一种处理和展示方法。
平行坐标是一种常见的可视化方法,用于对高维几何和多元数据的可视化。
平行坐标(Parallel Coordinates)为了表示在高维空间的一个点集,在N条平行的线的背景下(一般这N条线都竖直且等距),一个在高维空间的点被表示为一条拐点在N条平行坐标轴的折线,在第K个坐标轴上的位置就表示这个点在第K维的值。
平行坐标是信息可视化的一种重要技术。为了克服传统的笛卡儿直角坐标系容易耗尽空间、难以表达三维以上数据的问题,平行坐标将高维数据的各个变量用一系列相互平行的坐标轴表示,变量值对应轴上位置。为了反映变化趋势和各个变量间的相互关系,往往将描述不同变量的各点连接成折线。所以平行坐标图的实质是将多维欧式空间的一个点Xi(xi1,xi2,…,xim)映射到多维平面上的一条曲线。
平行坐标图可以表示超高维数据。平行坐标的一个显著优点是具有良好的数学基础,其射影几何解释和对偶特性使其很适合用于可视化数据分析,如程序4-11所示。
【程序4-11】
首先,计算总体的统计量,之后设置计算的最大值和最小值。本例中人为设置最小值为-1、最大值为99。为了计算简便,选择前10行作为目标行。然后使用for循环对数据进行训练。
最终图形结果如图4-13所示。
图4-13 属性的图形化展示
从图4-13中可以看出,10个不同的属性画出了10条不同的曲线(这些曲线根据不同的属性从而画出不同的运行轨迹)。
提示
可以选择不同的目标行和不同的属性进行验证,可以观察更多的数据所展示的结果有何不同。
4.4.5 热点图——属性相关性检测
前面笔者对数据集中数据的属性分别进行了横向和纵向的比较。现在请读者换一种思路,如果对数据属性之间的相关性进行检测,那该怎么办呢。
热点图是一种判断属性相关性的常用方法,根据不同目标行数据对应的数据相关性进行检测。程序4-12展示了对数据相关性进行检测的方法,根据不同数据之间的相关性做出图形。
【程序4-12】
最终结果如图4-14所示。
图4-14 属性之间的相关性图
不同颜色之间显示了不同的相关性,彩色的深浅显示了相关性的强弱程度。对此读者可以通过打印相关系数来直观地显示数据,相关系数打印方法如下:
提示
在此选择前20行中的前20列的数据属性进行计算,可以对其进行更多的验证和显示处理。