今天是新专栏《AI白身境》的第八篇,所谓白身,就是什么都不会,还没有进入角色。

上一节我们已经讲述了如何用爬虫爬取数据,那爬取完数据之后就应该是进行处理了,一个很常用的手段是数据可视化。

通过数据可视化,可以更加直观地表征数据,在深度学习项目中,常需要的数据可视化操作包括原始图片数据的可视化,损失和精度的可视化等。

作者 | 言有三 臧小满
编辑 | 言有三 臧小满

01 什么是数据可视化?

每每提到数据可视化,大家脑中可能会浮现很各种图表、西装革履的分析师、科幻大片中酷炫的仪表。

其实不用那么复杂,数据可视化早就融合进你我的生活,地铁线路图、公交时刻表,天气预报中的气象地图等都是很常见的。

为什么要进行可视化?

因为人是视觉动物,对于图像的敏感度要比对纯数字的敏感度高的多。

人类对图像的处理速度比文本快6万倍,同时人类右脑记忆图像的速度比左脑记忆抽象文字快100万倍。数据可视化正是利用人类天生技能来增强数据处理和组织效率。

举个简单的例子,计划买一套房产作为投资, 想要了解“去年上海房价哪里涨幅最大”,现以图作答, 把去年的增长率体现在图上,以20%作为分界, 增长超过20%的标红色, 超过越多则越大, 不足的标记成蓝色, 如下图,可以很快get到哪个区域的大幅度涨幅。

可视化将数字抽象成了更方便我们观察和感受的图表,因此需要熟悉使用。

02 低维数据可视化

数据有不同的维度,我们最常接触的就是一维,二维的数据,在机器学习任务中,包括损失函数等统计指标。

2.1 散点图

散点图,常用于分析离散数据的分布。比如我们有一个数据集,里面的图片有不同的大小,我们可以利用x,y轴分别对应图片的宽高,从而画出图片尺度的空间分布情况。越密集的地方,说明该尺度类型的图越多,如下图所示。

2.2 折线图

折线图是用于分析变量随另一个变量的变化关系,我们平常接触最多的loss曲线图,accuracy曲线图就是这一种,可以看指标随着训练过程的变化判断收敛情况,从而推测模型训练的好坏,折线图被广泛应用于各类分析,如下图所示。

2.3 直方图,饼状图

这两种图,都常用于统计数据的分布比例以及响应幅度,比如一幅图片的亮度分布情况,不同网络层的参数量,计算时间代价。

这几种图,适合对有时序变化的一维向量,有统计分布的一维向量,或者二维图像的尺度等信息进行可视化。

03 高维数据可视化

在机器学习任务中,数据通常是用成百上千维的向量表示,而超过3维的向量,就已经超过了人类的可视化认知,因此通常需要对数据进行降维。

数据降维方法可以分为线性方法和非线性方法。其中线性方法包括PCA和LDA,而非线性方法有保留局部特征、基于全局特征等方法,以t-SNE为代表。下面我们主要介绍PCA和t-SNE方法。

3.1 PCA降维

PCA,全称是Principal components analysis,这是一种分析、简化数据集的技术。PCA常用于减少数据集的维数,同时保持数据集中对方差贡献最大的特征,原理是保留低阶主成分,忽略高阶主成分,因为低阶成分保留了数据最多的信息

假定X是原始数据,Y是降维后的数据,W是变换矩阵,Y=XW。假如我们需要降到3 维以便于我们可视化,那就取Y的前三个主成分作为原始属性X的代表。

我们采用Google开源的网页版数据可视化工具Embedding Projector来进行可视化,链接如下:

http://projector.tensorflow.org/

选择MNIST作为可视化例子,它的原始维度为10000×784,即10000张28×28的图像。

利用这个工具我们进行PCA的可视化,降低到3个维度后,我们可以选择某个数字进行可视化。下图就是数字9的分布,可以看到,总共有1009个样本,数据的分布在物理空间上具有一定的聚类特性。

还可以用不同的颜色查看全体数据的分布,从这里可以更好的看出不同类的分布规律。

3.2 t-SNE降维

SNE全称是Stochastic Neighbor Embedding,它将数据点之间高维的欧氏距离转换为表示相似度的条件概率,目标是将高维数据映射到低维后,尽量保持数据点之间的空间结构,从而那些在高维空间里距离较远的点,在低维空间中依然保持较远的距离。

t-SNE即t-distributed stochastic neighbor embedding,t-SNE用联合概率分布替代了SNE中的条件概率分布,解决了SNE的不对称问题。通过引入t分布,解决了同类别之间簇的拥挤问题。

t-SNE方法实质上是一种聚类的方法,对于一个空间中的点,周围的其他点都是它的“邻居”,方法就是要试图使所有点具有相同数量的“邻居”。

t-SNE经过学习收敛后,通过投影到2维或者3维的空间中可以判断一个数据集有没有很好的可分性,即是否同类之间间隔小,异类之间间隔大。如果在低维空间中具有可分性,则数据是可分的,如果不具有可分性,可能是数据不可分,也可能仅仅是因为不能投影到低维空间。

下图是t-SNE可视化结果图,可以看出,数字都有很明显的聚类效果。

在进行一个机器学习任务之前,通过可视化来对数据集进行更深刻的认识,有助于预估任务的难度,在遇到困难后也会更加容易找到解决方案。

04 python数据可视化项目

考虑到python是第一大机器学习编程语言,同时开源项目居多,所以我们只关心python相关的工具,而且python也基本可以满足需求。

可视化的项目太多了,下面基于python和GitHub的数据,随便推荐几款。

1. tensorboard和tensorboardX,想必不需要多做介绍,后者大家可能不熟悉,被开发用来支持chainer, mxnet, numpy,4000+star。

https://github.com/lanpa/tensorboardX

2. visdom,支持numpy和torch的工具,常用于pytorch数据可视化,很强大,5000+star。

https://github.com/facebookresearch/visdom

3. seaborn:一款基于matplotlib的工具,简单来说,就是有更高的API,画出的图也好看,5000+star,主要处理低维数据。

https://github.com/mwaskom/seaborn

4. holoviews:很酷炫的工具,与season差不多,1000+star。

https://github.com/ioam/holoviews

5. missingno:一款缺失数据可视化工具,非常适合分析数据集的完整性,1000+star。

https://github.com/ResidentMario/missingno

就这么多,以后再集中讲可视化工具。

总结

数据可视化抽象了数据本身真正的价值,熟练掌握可视化对于分析数据的特征和深度学习模型的性能是必要的技能。

下期预告:下一期我们讲入行AI必备的数学基础,如果你有建议,欢迎留言,我们会及时采纳的。

AI白身境系列完整阅读:

第一期:【AI白身境】深度学习从弃用windows开始

第二期:【AI白身境】Linux干活三板斧,shell、vim和git

第三期:【AI白身境】学AI必备的python基础

第四期:【AI白身境】深度学习必备图像基础

第五期:【AI白身境】搞计算机视觉必备的OpenCV入门基础

第六期:【AI白身境】只会用Python?g++,CMake和Makefile了解一下

第七期:【AI白身境】学深度学习你不得不知的爬虫基础

第八期: 【AI白身境】深度学习中的数据可视化

第九期:【AI白身境】入行AI需要什么数学基础:左手矩阵论,右手微积分

第十期:【AI白身境】一文览尽计算机视觉研究方向

第十一期:【AI白身境】AI+,都加在哪些应用领域了

第十二期:【AI白身境】究竟谁是paper之王,全球前10的计算机科学家

AI初识境系列完整阅读

第一期:【AI初识境】从3次人工智能潮起潮落说起

第二期:【AI初识境】从头理解神经网络-内行与外行的分水岭

第三期:【AI初识境】近20年深度学习在图像领域的重要进展节点

第四期:【AI初识境】激活函数:从人工设计到自动搜索

第五期:【AI初识境】什么是深度学习成功的开始?参数初始化

第六期:【AI初识境】深度学习模型中的Normalization,你懂了多少?

第七期:【AI初识境】为了围剿SGD大家这些年想过的那十几招

第八期:【AI初识境】被Hinton,DeepMind和斯坦福嫌弃的池化,到底是什么?

第九期:【AI初识境】如何增加深度学习模型的泛化能力

第十期:【AI初识境】深度学习模型评估,从图像分类到生成模型

第十一期:【AI初识境】深度学习中常用的损失函数有哪些?

第十二期:【AI初识境】给深度学习新手开始项目时的10条建议

AI不惑境系列完整阅读:

第一期:【AI不惑境】数据压榨有多狠,人工智能就有多成功

第二期:【AI不惑境】网络深度对深度学习模型性能有什么影响?

第三期:【AI不惑境】网络的宽度如何影响深度学习模型的性能?

第四期:【AI不惑境】学习率和batchsize如何影响模型的性能?

第五期:【AI不惑境】残差网络的前世今生与原理

第六期:【AI不惑境】移动端高效网络,卷积拆分和分组的精髓

第七期:【AI不惑境】深度学习中的多尺度模型设计

第八期:【AI不惑境】计算机视觉中注意力机制原理及其模型发展和应用

第九期:【AI不惑境】模型剪枝技术原理及其发展现状和展望

第十期:【AI不惑境】模型量化技术原理及其发展现状和展望

第十一期:【AI不惑境】模型压缩中知识蒸馏技术原理及其发展现状和展望

第十二期:【AI不惑境】AutoML在深度学习模型设计和优化中有哪些用处?

对pca降维后的手写体数字图片数据分类_【AI白身境】深度学习中的数据可视化...相关推荐

  1. 对pca降维后的手写体数字图片数据分类_机器学习:数据的准备和探索——特征提取和降维...

    在数据的预处理阶段,特征提取和数据降维是提升模型表示能力的一种重要手段. 特征提取主要是从数据中找到有用的特征,用于提升模型的表示能力,而数据降维主要是在不减少模型准确率的情况下减少数据的特征数量. ...

  2. 对pca降维后的手写体数字图片数据分类_知识干货-机器学习-TSNE数据降维

    1.TSNE的基本概念 2.例1 鸢尾花数据集降维 3.例2 MINISET数据集降维 1.TSNE的基本概念 t-SNE(t-distributed stochastic neighbor embe ...

  3. 对pca降维后的手写体数字图片数据分类_python机器学习API介绍13: 数据降维及主成分分析...

    数据降维概述:数据降维是机器学习领域中重要的内容,所谓的降维就是采用某种映射方法,将高维空间中的数据点映射到低维的空间中.其本质是学习一个映射函数f: x->y.其中x是原始数据点的表述,目前多 ...

  4. 如何从TensorFlow的mnist数据集导出手写体数字图片

    在TensorFlow的官方入门课程中,多次用到mnist数据集. mnist数据集是一个数字手写体图片库,但它的存储格式并非常见的图片格式,所有的图片都集中保存在四个扩展名为idx3-ubyte的二 ...

  5. R语言plotly可视化:使用PCA算法进行数据降维、使用plotly可视化PCA所有的主成分绘制散点图矩阵、降维后的两个(三个)核心主成分的二维、三维可视化图形、方差解释的量、载荷图等

    R语言plotly可视化:使用PCA算法进行数据降维.使用plotly可视化PCA所有的主成分绘制散点图矩阵.降维后的两个(三个)核心主成分的二维.三维可视化图形.方差解释的量.载荷图等 目录

  6. GAN网络生成手写体数字图片

    Keras真香,以前都是用tensorflow来写神经网络,自从用了keras,发现这个Keras也蛮方便的. 目前感觉keras的优点就是方便搭建基于标准网络组件的神经网络,这里的网络组件包括全连接 ...

  7. 1 图片channels_深度学习中各种图像库的图片读取方式

    深度学习中各种图像库的图片读取方式总结 在数据预处理过程中,经常需要写python代码搭建深度学习模型,不同的深度学习框架会有不同的读取数据方式(eg:Caffe的python接口默认BGR格式,Te ...

  8. 深度学习中图片数据增强方法

    简 介: 在深度学习中需要对图像进行不同的处理.本文对比了基于Numpy以及Paddle.vision.transforms函数中对于图片处理的效果. 关键词: 图像预处理,cv2,paddle #m ...

  9. (转)深度学习中各种图像库的图片读取方式

    https://blog.csdn.net/u013841196/article/details/81194310 深度学习中各种图像库的图片读取方式总结 在数据预处理过程中,经常需要写python代 ...

最新文章

  1. 使用RBTool自动提交code review请求
  2. linux 自学系列:wc命令
  3. cannot import name ‘izip‘ from ‘itertools‘
  4. Poj(2240),Floyd求汇率是不是赚钱
  5. 用界面读取图片并且保存图片的方法
  6. solr调用lucene底层实现倒排索引源码解析
  7. cacti监控添加thold插件
  8. HBase oldWALs目录文件剧增占用磁盘空间问题
  9. 关于realarm210 realarmTest.apk不能直接安装问题解决方法
  10. 仿微软Office 迷你工具条(简易编辑器)
  11. python如何使用字典中的值并进行比较_比较字典python中的值
  12. c语言三角波的mif文件,EDA课程设计报告-正弦波信号发生器的设计.doc
  13. 拨号不能建立远程计算机的连接,彻底解决Win8、Win10系统宽带拨号出现“错误720:不能建立到远程计算机的连接”的问题...
  14. 从数据爬取到决策树建模——预测北京二手房房价
  15. ANSYS WORKBENCH基础学习之应力奇异及位移结果对比
  16. 计算机使用的一些技巧
  17. POI导出Excel(用户自己选择路径)
  18. 什么是人工智能技术?
  19. java throw 什么意思_Java中throw和throws有什么区别?
  20. onMeasure()和onSizeChanged()

热门文章

  1. python svg转png_Python实现批量把SVG格式转成png、pdf格式的代码分
  2. android遥控器按键传输流程,android 海思平台遥控器按键映射流程
  3. [蓝桥杯][算法训练VIP]暗恋(二维树状数组)
  4. eovs实训报告总结心得_实训总结与心得体会3篇_心得体会
  5. 【计算机组成原理】定点除法运算
  6. 如何把ajax改成同步请求,如何将Ajax请求从异步改为同步
  7. mysql 之后_MYSQL登陆完之后如何操作???(新手求助)
  8. sqlserver实验心得体会_sqlserver 关于DBCC CHECKDB的总结
  9. python脚本语言采用声音作为手段_python 利用pyttsx3文字转语音过程详解
  10. dataframe 删除首尾空格_你敲空格的速度很快,但女人的手不是用来敲空格的!...