MachineLearning入门-8(数据可视化)

为了生成最优化的算法模型,必须对数据进行理解。最快、最有效的方式是通过数据的可视化来加强对数据的理解。

接下来将通过matplotlib对数据可视化,以加强对原始数据集的理解。


单一图表

直方图(Histogram)又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据的分布情况。一般用横轴表示数据类型,纵轴表示分布情况。直方图可以非常直观展示每个属性的分布情况。通过图表可以很直观地看到数据是高斯分布、指数分布还是偏态分布。代码如下

1 from pandas import read_csv
2 import matplotlib.pyplot as plt
3 #使用pandas导入CSV数据
4 filename='/home/aistudio/work/pima_data1.csv'
5 names=['preg','plas','pres','skin','test','mass','pedi','age','class']
6 data=read_csv(filename,names=names)
7 data.hist()
8 plt.show()

从上图可以看到,age、pedi和test也许是指数分布;mass、pres、plas也许是高斯分布。

密度图是一种表现与数据值对应的边界或域对象的图形表示方法,一般用于呈现连续变量。密度图类似于对直方图进行抽象,用平滑的线来描述数据的分布。这也是一种用来显示数据分布的图表。代码如下:

1 from pandas import read_csv
2 import matplotlib.pyplot as plt
3 
4 filename='/home/aistudio/work/pima_data1.csv'
5 names=['preg','plas','pres','skin','test','mass','pedi','age','class']
6 data=read_csv(filename,names=names)
7 data.plot(kind='density',subplots=True,layout=(3,3),sharex=False)
8 plt.show()

通过密度图来显示数据分布,相对于直方图更直观。

箱线图又称盒须图、盒式图或箱型图,是一种用于显示一组数据分布情况的统计图。因形状如箱子儿得名,在各种领域都经常被使用。

首先画一条中位数线,然后以下四位分数和上四位分数画一个盒子,上下各有一条横线,表示上边沿和下边沿,通过横线来显示数据的伸展状态,游离在边沿之外的点为异常值。

1 rom pandas import read_csv
2 import matplotlib.pyplot as plt
3 
4 filename='/home/aistudio/work/pima_data1.csv'
5 names=['preg','plas','pres','skin','test','mass','pedi','age','class']
6 data=read_csv(filename,names=names)
7 data.plot(kind='box',subplots=True,layout=(3,3),sharex=False)
8 plt.show()

上图显示,不同属性的延伸截然不同。

相关矩阵图主要用来展示两个不同属性相互影响的程度。如果两个属性按照相同的方向变化,说明是正影响。如果两个属性朝相反的方向变化,说明是反向影响。把所有属性两两影响的关系展示出来的图表叫相关矩阵。

矩阵图法就是从多维问题的事件中找出成对的因素,排列成矩阵图,然后根据矩阵图来分析问题,确定关键点。它是一种通过多因素综合思考来探索问题的好方法。

 1 from pandas import read_csv
 2 import matplotlib.pyplot as plt
 3 import numpy as np
 4 
 5 filename='/home/aistudio/work/pima_data1.csv'
 6 names=['preg','plas','pres','skin','test','mass','pedi','age','class']
 7 data=read_csv(filename,names=names)
 8 correlations=data.corr()
 9 fig=plt.figure()
10 ax=fig.add_subplot(111)
11 cax=ax.matshow(correlations,vmin=-1,vmax=1)
12 fig.colorbar(cax)
13 ticks=np.arange(0,9,1)
14 ax.set_xticks(ticks)
15 ax.set_yticks(ticks)
16 ax.set_xticklabels(names)
17 ax.set_yticklabels(names)
18 plt.show()

在图表的左边和上边显示的是完全相同的属性名称,通过这个矩阵可以清楚地看到各个属性两两关联的关系。

散点矩阵图表示因变量随自变量变化的大致趋势,据此可以选择合适的函数对数据点进行拟合。散点矩阵图由两组数据构成多个坐标点,考察坐标点的分布,可以判断两个变量之间是否存在某种关联或总结坐标点的分布模式。散点矩阵图将序列显示为一组点,值由点在图表中的位置表示,类别由图表中的不同标记表示。散点矩阵图通常用于比较跨类别的聚合数据。当同时考察多个变量的相关关系时,若一一绘制它们的简单散点图将十分麻烦。此时可以利用散点矩阵图来绘制各个变量间的散点图,这样可以快速发现多个变量间的主要相关性,这在进行多元线性回归时显得尤为重要。

1 from pandas import read_csv
2 import matplotlib.pyplot as plt
3 from pandas.plotting import scatter_matrix
4 
5 filename='/home/aistudio/work/pima_data1.csv'
6 names=['preg','plas','pres','skin','test','mass','pedi','age','class']
7 data=read_csv(filename,names=names)
8 scatter_matrix(data)
9 plt.show()

原文地址:https://www.cnblogs.com/yuzaihuan/p/12292675.html