TensorFlow深度学习应用实践
上QQ阅读APP看书,第一时间看更新

4.2 图形化数据处理——Matplotlib包使用

对于单纯的数字来说,仅从读数据的角度并不能直观反映数字的偏差和集中程度,因此需要采用另外一种方法来更好地分析数据。对于数据来说,没有什么能够比用图形来解释更为形象和直观的了。

4.2.1 差异的可视化

继续回到表4-2中的数据,第二列是各个房屋的价格,其价格并不相同,因此直观地查看价格的差异和偏移程度是较为困难的一件事。

研究数值差异和异常的方法是绘制数据的分布程度,相对于合适的直线或曲线,其差异程度如何,以便帮助确定数据的分布,如程序4-4所示。

【程序4-4】

结果如图4-2所示。

图4-2 房屋价格的偏离展示

这里展示了一个对价格偏离程度的代码实现,col1集合是价格的合集,scipy是专门的机器学习的数据处理包,probplot计算了col1数据集中数据在正态分布下的偏离程度。从图4-2可以看出,价格围绕一条直线上下波动,有一定的偏离,但是偏离情况不太明显。

其中,R为0.9579,指的是数据拟合的相关性,一般0.95以上就可以认为数据拟合程度比较好。

4.2.2 坐标图的展示

通过上文第一个对回归的可视化处理可以看出,可视化能够让数据更加直观地展现出来,同时可以让数据的误差表现得更为直观。

图4-3是一个横向坐标图,用以展示不同类别所占的比重。系列1、2、3可以分别代表不同的属性,而类别1~6可以看作是6个不同的特例。通过坐标图的描述可以非常直观地看出不同的类别中不同的属性所占的比重。

图4-3 横向坐标图

一个坐标图能够对数据进行展示,其最基本的要求是可以通过不同的行或者列表现出数据的某些具体值,不同的标签使用不同的颜色和样式用以展示不同的系统关系。程序4-5展示了对于不同目标的数据提取不同的行进行显示的代码。

【程序4-5】

通过选定不同目标行中不同的属性,可以对其进行较好的衡量,比较两个行之间的属性关系以及属性之间的相关性,如图4-4所示。不同的目标,即使属性千差万别,也可以构建相互关系图。

图4-4 不同目标属性之间的关系

本例中采用的数据较少,随着数据的增加,属性之间一般会呈现一种正态分布,这点可以请读者自行验证。

提示

程序4-5可以出现两幅图,第一幅图请读者自行查看,建议将其与第二幅进行比较。

4.2.3 玩个大的

现在开始玩个大的。

对于大规模数据来说,由于涉及的目标比较多,而属性特征值又比较多,对其查看更是一项非常复杂的任务。因此为了更好地理解和掌握大数据的处理,将其转化成可视性较强的图形是更好的做法。

前面对小数据集进行了图形化查阅,现在对现实中的数据进行处理。

数据来源于真实的信用贷款,从50000个数据记录中随机选取200个数据进行计算,而每个数据又有较多的属性值。大多数情况下,数据是以csv格式进行存储的,pandas包同样提供了相关读取程序。具体代码见程序4-6。

【程序4-6】

从程序4-6可以看到,首先使用filePath创建了一个文件路径,用以建立数据地址。之后使用pandas自带的read_csv读取csv格式的文件。dataFile是读取的数据集,之后使用iloc方法获取其中行的属性数据。scattle是做出分散图的方法,对属性进行画图。最终结果如图4-5所示。

图4-5 大数据集中不同目标属性之间的关系

数据在(0,0)的位置有较大的集合,表明属性在此的偏离程度较少,而几个特定点是偏离程度较大的点。这可以帮助读者对离群值进行分析。

提示

在程序4-6中出现了两个图,第一个图请读者自行分析。

下面继续对数据集进行分析。程序4-5和程序4-6让读者看到了对数据同一行中不同的属性进行处理和现实的方法。如果要对不同目标行的同一种属性进行分析,那么如何做呢?请读者参阅程序4-7。

【程序4-7】

程序4-7对数据进行处理时提取了200行数据中的第10个属性,并对其进行判定,单纯的判定规则是根据均值对其区分,之后计算判定结果,如图4-6所示。

图4-6 大数据集中不同行相同属性之间的关系

通过图4-6可以看到,属性被人为地分成两部分,数据集合的程度也显示了偏离程度。如果下一步需要对属性的离散情况进行反映,则应该使用程序4-8。

【程序4-8】

在此段程序中,离散的数据被人为地加入了离散变量。具体显示结果请读者自行完成。

提示

读者可以对程序的属性做出诸多抽取,并尝试使用更多的方法和变量进行处理。