用Pandas在Python中可视化机器学习数据

您必须了解您的数据才能从机器学习算法中获得最佳结果。

更了解您的数据的最快方法是使用数据可视化。

在这篇文章中,您将会发现如何使用Pandas在Python中可视化您的机器学习数据。

让我们开始吧。

Python中的机器学习数据的可视化随着熊猫 摄影通过Alex Cheek,保留一些权利。

关于方法

本文中的每个部分都是完整且独立的,因此您可以将其复制并粘贴到您自己的项目中并立即使用。

皮马印第安人数据集(Pima Indians dataset用于演示的每个情节。该数据集描述了皮马印第安人的医疗记录,以及每位患者是否在五年内发生糖尿病。因此这是一个分类问题。

这是一个很好的演示数据集,因为所有的输入属性都是数字的,要预测的输出变量是二进制的(0或1)。

这些数据可以从UCI机器学习库中免费获得,并作为每个配方的一部分直接下载。

单变量图

在本节中,我们将看看可以用来独立理解每个属性的技巧。

直方图

获取每个属性分布的一个快速方法是查看直方图。

直方图将数据分组为数据箱,并为您提供每个箱中观察数量的计数。从箱子的形状,你可以很快得到一个属性是高斯'的感觉,偏斜,甚至有一个指数分布。它也可以帮助您查看可能的异常值。

# 单变量直方图
import matplotlib.pyplot as plt
import pandas
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = pandas.read_csv(url, names=names)
data.hist()
plt.show()

我们可以看到,也许年龄属性,pedi和测试可能服从指数分布。我们也可以看到,masspresplas属性可能具有高斯或接近高斯的分布。这很有趣,因为许多机器学习技术假设输入变量为高斯单变量分布。

单变量直方图

密度图

密度图是快速了解每个属性分布情况的另一种方法。这些图像看起来像是一个抽象的直方图,在每个数据箱的顶部绘制了一条平滑的曲线,就像您的眼睛如何理解直方图一样。

# 单变量密度图
import matplotlib.pyplot as plt
import pandas
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = pandas.read_csv(url, names=names)
data.plot(kind='density', subplots=True, layout=(3,3), sharex=False)
plt.show()

我们可以看到每个属性的分布比直方图更清晰。

单变量密度图

箱线图(Box和Whisker Plots 或 Boxplots)

查看每个属性分布的另一个有用的方法是使用箱线图

箱线图总结了每个属性的分布,在第25和第75百分位数(中间数据的50%)附近绘制了中间值(中间值)和方框。Whisker提供了数据的传播和Whisker外部的点显示了候选离群值(比中间50%的数据的扩散大小大1.5倍的值)的想法。

#箱线图
import matplotlib.pyplot as plt
import pandas
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = pandas.read_csv(url, names=names)
data.plot(kind='box', subplots=True, layout=(3,3), sharex=False, sharey=False)
plt.show()

我们可以看到,属性的传播是完全不同的。一些像年龄测试皮肤似乎相当倾向于较小的值。

单变量箱线图

多变量图

本部分显示多个变量之间交互的图表示例。

相关矩阵图

相关性表明两个变量之间的变化是如何相关的。如果两个变量在同一个方向上变化,它们是正相关的。如果相反方向的变化(一个上升,一个下降),那么它们是负相关的。

您可以计算每对属性之间的相关性。这被称为相关矩阵。然后,您可以绘制相关矩阵,并了解哪些变量具有高度相关性。

这是有用的,因为如果有高度相关的输入变量在您的数据中,一些机器学习算法如线性和逻辑回归性能可能较差。

#相关矩阵图
import matplotlib.pyplot as plt
import pandas
import numpy
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = pandas.read_csv(url, names=names)
correlations = data.corr()
# plot correlation matrix
fig = plt.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)
plt.show()

我们可以看到矩阵是对称的,即矩阵的左下角与右上角相同。这是有用的,因为我们可以在同一个图中看到两个不同的视图。我们还可以看到每个变量在从左上角到右下角的对角线上完全正相关(如您所期望的那样)。

相关矩阵图

散点图矩阵

散点图将两个变量之间的关系显示为二维点,每个属性的一个轴。您可以为数据中的每对属性创建一个散点图。一起绘制所有这些散点图被称为散点图矩阵。

散点图对于发现变量之间的结构关系非常有用,例如是否可以用一条线来总结两个变量之间的关系。具有结构化关系的属性也可能是相关的,可以从数据集中移除。

# 散点图矩阵
import matplotlib.pyplot as plt
import pandas
from pandas.tools.plotting import scatter_matrix
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = pandas.read_csv(url, names=names)
scatter_matrix(data)
plt.show()
 

像相关矩阵图一样,散点图矩阵是对称的。从不同的角度来看,这都是非常有用的。由于每个变量的散点图都没有绘制点,所以对角线显示了每个属性的直方图。

散点图矩阵

概要

在这篇文章中,您发现了许多方法,可以使用Pandas更好地理解Python中的机器学习数据。

具体来说,你学会了如何使用如下方法来绘制你的数据:

  • 直方图
  • 密度图
  • 盒和晶须图
  • 相关矩阵图
  • 散点图矩阵

本文的版权归 QiqiHe 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术随笔

[译] Deep Residual Learning for Image Recognition (ResNet)

39480
来自专栏AI研习社

谷歌工程师:聊一聊深度学习的weight initialization

编者按:本文作者夏飞,清华大学计算机软件学士,卡内基梅隆大学人工智能硕士。现为谷歌软件工程师。作者授权雷锋网 AI 研习社发布。 ? █ TLDR (or th...

34350
来自专栏量化投资与机器学习

【深度学习系列】漫谈RNN之序列建模(机器翻译篇)

推送第四日,量化投资与机器学习公众号将为大家带来一个系列的 Deep Learning 原创研究。本次深度学习系列的撰稿人为 张泽旺 ,DM-Master,目前...

356100
来自专栏数据科学与人工智能

【DS】Keras深度学习介绍

现在让我们继续解决一个真正的业务问题。一家保险公司向你提供了他们客户先前索赔的数据。保险公司希望你开发一个模型来帮助他们预测哪些索赔看起来是欺诈的。通过这样做,...

11920
来自专栏腾讯技术工程官方号的专栏

机器学习在HEVC 视频编码中的实践

背景与目标 当前视频编码中应用最广泛的是AVC(H.264),而HEVC(H.265)作为下一代的视频编码算法,在压缩性能上可以再节省40%的码率,优势很明显,...

36880
来自专栏文武兼修ing——机器学习与IC设计

CapsNet学习笔记理论学习代码阅读(PyTorch)参考资料

理论学习 胶囊结构 胶囊可以看成一种向量化的神经元。对于单个神经元而言,目前的深度网络中流动的数据均为标量。例如多层感知机的某一个神经元,其输入为若干个标量,...

43990
来自专栏技术墨客

MNIST 机器学习入门(TensorFlow)

本文是为既没有机器学习基础也没了解过TensorFlow的码农、序媛们准备的。如果已经了解什么是MNIST和softmax回归本文也可以再次帮助你提升理解。在阅...

12420
来自专栏小小挖掘机

残差网络ResNet网络原理及实现

论文地址:https://arxiv.org/pdf/1512.03385.pdf

50430
来自专栏小小挖掘机

推荐系统遇上深度学习(三)--DeepFM模型理论和实践

推荐系统遇上深度学习系列: 推荐系统遇上深度学习(一)--FM模型理论和实践 推荐系统遇上深度学习(二)--FFM模型理论和实践 1、背景 特征组合的挑战...

1.4K90
来自专栏机器学习之旅

应用:数据预处理-异常值识别

上四分位数Q3,又叫做升序数列的75%位点 下四分位数Q1,又叫做升序数列的25%位点 箱式图检验就是摘除大于Q3+3/2*(Q3-Q1),小于Q1-3/2...

15430

扫码关注云+社区

领取腾讯云代金券