📅  最后修改于: 2020-12-10 05:31:48             🧑  作者: Mango
在上一章中,我们讨论了数据对于机器学习算法的重要性以及一些Python配方,以了解具有统计信息的数据。还有另一种称为可视化的方式来理解数据。
借助数据可视化,我们可以看到数据的外观以及数据的属性保持什么样的关联。这是查看要素是否与输出相对应的最快方法。借助以下Python食谱,我们可以了解具有统计信息的ML数据。
最简单的可视化类型是单变量或“单变量”可视化。借助单变量可视化,我们可以独立了解数据集的每个属性。以下是Python用于实现单变量可视化的一些技术-
直方图将数据按箱进行分组,这是了解有关数据集中每个属性分布的最快方法。以下是直方图的一些特征-
它为我们提供了为可视化而创建的每个箱中观测值的计数。
从垃圾箱的形状,我们可以轻松观察分布,即天气为高斯分布,偏斜或指数分布。
直方图还可以帮助我们查看可能的异常值。
下面显示的代码是一个Python脚本示例,用于创建Pima Indian Diabetes数据集的属性直方图。在这里,我们将在Pandas DataFrame上使用hist()函数生成直方图,并绘制matplotlib进行绘制。
from matplotlib import pyplot
from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
data.hist()
pyplot.show()
上面的输出显示它为数据集中的每个属性创建了直方图。由此,我们可以观察到年龄,pedi和测验属性可能具有指数分布,而质量和plas具有高斯分布。
获取每个属性分布的另一种快速简便的技术是密度图。它也类似于直方图,但在每个容器的顶部都有一条平滑的曲线。我们可以称它们为抽象直方图。
在下面的示例中, Python脚本将生成“密度图”,用于分布Pima印度糖尿病数据集的属性。
from matplotlib import pyplot
from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
data.plot(kind='density', subplots=True, layout=(3,3), sharex=False)
pyplot.show()
从上面的输出中,可以很容易地理解密度图和直方图之间的差异。
Box和Whisker图(也简称为boxplots)是另一种有用的技术,可用于检查每个属性的分布。以下是此技术的特点-
它本质上是单变量的,总结了每个属性的分布。
它为中间值(即中位数)画一条线。
它在25%和75%周围绘制一个框。
它还会绘制晶须,这将使我们对数据的传播有所了解。
晶须外的点表示离群值。离群值比中间数据散布的大小大1.5倍。
在下面的示例中, Python脚本将生成“密度图”,用于分布Pima印度糖尿病数据集的属性。
from matplotlib import pyplot
from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
data.plot(kind='box', subplots=True, layout=(3,3), sharex=False,sharey=False)
pyplot.show()
从上面的属性分布图可以看出,年龄,测试和皮肤似乎偏向较小的值。
可视化的另一种类型是多变量或“多变量”可视化。借助多元可视化,我们可以了解数据集多个属性之间的相互作用。以下是Python中实现多元可视化的一些技术-
相关性是有关两个变量之间变化的指示。在前面的章节中,我们讨论了Pearson的相关系数以及相关性的重要性。我们可以绘制相关矩阵以显示哪个变量相对于另一个变量具有较高或较低的相关性。
在以下示例中, Python脚本将为Pima印度糖尿病数据集生成并绘制相关矩阵。它可以借助Pandas DataFrame上的corr()函数生成,并借助pyplot进行绘制。
from matplotlib import pyplot
from pandas import read_csv
import numpy
Path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(Path, names=names)
correlations = data.corr()
fig = pyplot.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(correlations, vmin=-1, vmax=1)
fig.colorbar(cax)
ticks = numpy.arange(0,9,1)
ax.set_xticks(ticks)
ax.set_yticks(ticks)
ax.set_xticklabels(names)
ax.set_yticklabels(names)
pyplot.show()
从相关矩阵的上述输出中,我们可以看到它是对称的,即左下与右上相同。还观察到,每个变量彼此正相关。
散点图借助二维点显示一个变量受另一个变量影响的程度或它们之间的关系。散点图在概念上非常像线图,因为它们使用水平和垂直轴绘制数据点。
在以下示例中, Python脚本将为Pima印度糖尿病数据集生成并绘制散点图矩阵。它可以在Pandas DataFrame上的scatter_matrix()函数的帮助下生成,并在pyplot的帮助下进行绘制。
from matplotlib import pyplot
from pandas import read_csv
from pandas.tools.plotting import scatter_matrix
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
scatter_matrix(data)
pyplot.show()