这才是使用数据降维&可视化工具 HyperTools 的正确姿势! | Kaggle 实战教程

数据科学家、分析师处理的数据集,正在变得越来越复杂。

机器学习的很大一部分专注于从复杂数据中抽取涵义。但是,这一过程中人类仍然扮演很重要的角色。人类的视觉系统非常善于检测复杂结构,并发现海量数据中的微妙模式。人眼睁开的每一秒钟,都有无数的数据点(到达视网膜的光线图形)蜂拥至大脑的视觉区域。对于识别沙滩上的一枚完整贝壳,或是人群中朋友的脸,人脑能轻松完成。这一点其实十分了不起。我们的大脑是无监督模式发现的“狂人”。

另一方面,依赖于我们的视觉系统了来提取信息,有至少一个主要缺陷:至多只能同时感知三个维度。而今天的数据集,有很多的维度比这要高得多。

现在数据科学家普遍面临的问题是:

如何驾驭人脑的模式识别超能力,实现复杂、高维数据集的可视化?

如何降维?

如同其名,降维是指把高维数据集转化为低维数据集。比如说,把 Kaggle 上针对蘑菇的 UCI ML 数据集组织为矩阵。每一行都包含一系列蘑菇的特征,比如菌盖大小、形状、颜色、气味等等。对这做降维,最简单的方法是忽略某些特征。比如挑出你最喜欢的三个特征,去掉其他。但如果忽略的特征包含有价值的甄别信息,比方说要判断蘑菇是否有毒,这就非常有问题了。

一个更复杂的办法,是只考虑主要的东西,来对数据集进行降维。即将特征进行合并,用合并后的主成分来解释数据集中的大多数变化。利用一项名为主成分分析(PCA)的技术,我们能够在降维的同时,尽可能保留数据集的宝贵变化。这里的思路是,我们能够创建一系列(更少)新的特征,每一项新特征都由几项旧特征合并得到。举个例子,其中一项新特征也许会同时代表形状和颜色,另一项代表尺寸和毒性。大体上,每一项新特征都会由原始特征的加权和得到。

下面,是一副帮助你直觉性理解数据降维的图示。

假设你有一个三维数据集(左),你想要把它转化为右边的二维数据集。PCA 会在原始 3D 空间找出主要的坐标轴,即点与点之间的差别最大。当我们把两条最能解释数据差异的坐标轴确定下来(左图中的黑线),就可以在这两条坐标轴上重新为数据作图。3D 数据集现在就变成了 2D 的。这里,我们选择的是低维例子,所以我们能看到发生了什么。但是,这项技术能用同样的方式应用于高维数据集。

HyperTools

Kaggle 开发了 HyperTools 工具包,来帮助开发者对高维数据进行降维视觉探索。

它基本的流水线,是导入高维数据集(或者一系列高维数据集),在单个函数调用里降维,然后创建图表。该算法包建立在多个大家很熟悉的工具的基础上,比如 matplotlib、scikit-learn 和 seaborn。HyperTools 以易用性为首要设计目标,请见下面的两个例子。

用 HyperTools 找毒蘑菇,对静态点云进行可视化

首先,我们来探索下上文提到的蘑菇数据集。从导入相关算法库开始:

  1. import pandas as pd
  2. import hypertools as hyp

接下来,把数据读取到 pandas DataFrame:

  1. data = pd.read_csv('../input/mushrooms.csv')
  2. data.head()

DataFrame 的每一行对应着对某一个蘑菇的观察值,每一列反映出一个蘑菇的描述性特征。这里,仅展示了表单的一部分。现在,我们可以通过把数据导入 HyperTools,把高维数据在低维空间表示出来。为了对文本列进行处理,在降维之前,HyperTools 会先把每个文本列转为一系列二元的假变量。如果“菌盖尺寸”这一列包含“大”和“小”标签,这一列会被转为两个二元列,一个针对“大”,另一个针对“小”。 1 代表该特征(“大”或“小”)的存在,0 代表不存在。(雷锋网注:详细解释请参考 pandas 文件中的 get_dummies 函数)

  1. hyp.plot(data, 'o')

   

在绘制  DataFrame 上,我们实际上创建了一个三维的“蘑菇空间”。具有相似特征的蘑菇,是空间中距离相近的点,特征不同的,则距离更远。用这种方式做 DataFrame 可视化,一件事马上变得很清楚:数据中有多组簇。换句话说,蘑菇特征的所有组合并不是等可能的(equally likely),而特定的组合,会倾向于聚到一起。为更好理解这一空间,我们可以根据所感兴趣的数据特征,对每个点上色。举个例子,根据蘑菇是否有毒/可食用来上色。

  1. hyp.plot(data,'o', group=class_labels, legend=list(set(class_labels)))

红色代表有毒,绿色无毒

用这种方式可视化,可以清楚看出,每个簇中的蘑菇是否有毒都是稳定的。但不同之处在于簇与簇之间。另外,看起来有好几个十分明确的“有毒”以及“可食用”的簇。我们可以借助 HyperTools 的“聚类”功能,对此进一步探索。它使用了 k-means 聚类方法对观察值上色。数据集的描述表明其有 23 种不同种类的蘑菇,因此,我们把n _clusters 参数设为 23。

  1. hyp.plot(data, 'o', n_clusters=23)

   

To gain access to the cluster labels, the clustering tool may be called directly using hyp.tools.cluster, and the resulting labels may then be passed to hyp.plot:

为访问簇的标签,该聚类工具可用 hyp.tools.cluster 直接调用,相关标签随机被传递到 hyp.plot:

  1. cluster_labels = hyp.tools.cluster(data, n_clusters=23)
  2. hyp.plot(data, group=cluster_labels)

在默认设置中,HyperTools 使用 PCA 来进行降维。但只需要额外的几行代码,我们就可以直接从 sklearn 中调用相关函数,以使用其它降维方法。。举个例子,如果我们使用 t-SNE 来给数据降维的话:

  1. from sklearn.manifold import TSNE
  2. TSNE_model = TSNE(n_components=3)
  3. reduced_data_TSNE = TSNE_model.fit_transform(hyp.tools.df2mat(data))
  4. hyp.plot(reduced_data_TSNE,'o', group=class_labels, legend=list(set(class_labels)))

不同的降维方法,会突出或保留数据的不同方面。这里有一个包含额外示例(包括其它降维方法)的资源库。

对于如同通过降维和可视化暴露出数据的几何机构,上述的数据考察(data expedition)给出了一个例子。蘑菇数据集的观察值形成了独立的簇,我们通过 HyperTools 来发现这些簇。类似这样的探索和可视化,能够指导我哦们的分析决策,比如,是否要用一个特定种类的分类器,来区分有毒 vs 可食用的蘑菇。如果你想要自己试试用 HyperTools 分析这个蘑菇数据集,请戳这里

用 HyperTools 发现全球变暖

上文蘑菇数据集包含的是静态观察值,我们再一起来看看全球气温数据。这个案例会向大家展示,如何利用 HyperTools  使用动态轨迹对时间序列数据进行可视化。

接下来的数据集,是 1875–2013 年间全球 20 个城市每月的气温记录。为了用 HyperTools 来准备数据集,我们创建了一个时间/城市矩阵,每一行是接下来每月的气温记录,每一列是不同城市的气温值。你可以用 Kaggle 上的 Berkeley Earth Climate Change 来重建这一示例,或者克隆这一 GitHub 资源库

为了对温度变化做可视化,我们会用 HyperTools 来给数据降维,然后把温度随时间的变化用线画出来:

  1. hyp.plot(temps)

这看起来像一团乱麻,是吧?但我们承诺了找出数据的结构——现在就来找吧。

由于每个城市的地理位置不同,它温度时间序列的平均值和方差会比其他城市更高或者更低。这会反过来影响降维时该城市的权重。为了对每个城市在图表中的权重进行标准化处理,我们可设置标准化 flag (默认值是 False)。设置 normalize='across' 。HyperTools 整合了一系列实用的标准化选项,详情请戳这里

  1. hyp.plot(temps, normalize='across')

用鼠标旋转该数据图,旋即暴露出的结构很有意思。我们可以按照年份来对线条上色,使其结构更显眼,并帮助我们理解它如何随时间而变化。偏红的线条,意味着时间更久远,偏蓝的线条意味着时间更近。

  1. hyp.plot(temps, normalize='across', group=years.flatten(), palette='RdBu_r')

上色后的线条,暴露出了数据的两个关键结构信息。第一,有系统性的蓝色到红色的色彩渐变,表明全球的整体气温模式有系统性的改变。第二,每种颜色有周期性的模式,反映出季节气候变化。我们也可以用二维图形对这两个现象做可视化:

  1. hyp.plot(temps, normalize='across', group=years.flatten(), palette='RdBu_r', ndims=2)

现在是压轴戏——在创建静态图形之外,HyperTools 还能创建动图,这有时能显露出数据中的其他模式。创造出动图,只需要在对时间序列数据做可视化时,简单地把 animate=True 传给 hyp.plot。如果你还传了 chemtrails=True,一条数据的低透明度足迹会保留在图形中:

  1. hyp.plot(temps, normalize='across', animate=True, chemtrails=True)

最终的成果,便是该动画。注视着它给你带来的满足感,叫做“全球变暖”。

以上便是用 HyperTools 为气象和蘑菇数据做可视化的例子。想要了解更多的话,请访问项目的 GitHub 资源库,文件阅读网页,Kaggle 研究团队写的论文,以及 notebooks 演示

本文作者:三川

本文转自雷锋网禁止二次转载,原文链接

时间: 2025-01-24 18:37:29

这才是使用数据降维&可视化工具 HyperTools 的正确姿势! | Kaggle 实战教程的相关文章

这才是 TensorFlow 自带可视化工具 TensorBoard 的正确打开方式!(附项目源码)

  TensorBoard 如何更直观的观察数据在神经网络中的变化,或是已经构建的神经网络的结构.上一篇文章说到,可以使用 matplotlib 第三方可视化,来进行一定程度上的可视化.然而Tensorflow也自带了可视化模块Tensorboard,并且能更直观的看见整个神经网络的结构. 上面的结构图甚至可以展开,变成:   使用 结构图: with tensorflow .name_scope(layer_name): 直接使用以上代码生成一个带可展开符号的一个域,并且支持嵌套操作: wit

大数据BI可视化工具:改变了企业高层的管理思维

       大数据BI可视化工具的诞生,改不了很多企业的运作模式.数据化运营.数据化思维被大肆宣传推广,每一个现代的企业家都需要具备最基本的数据运营思维模式.那么,作为一个企业高层管理者,怎样在引入一款大数据BI可视化工具之后迅速建立或者说转换自己的管理思维,并迅速适应工具的运用?小编在这里为您分享一点观点. 企业在导入数据化管理的过程中,对管理者的数据思维培养是一项必要的工作.管理者没有数据思维,企业的数据化管理将是空的,数据会被管理者放置到一边,而无法起到应有的作用. 数据化管理是企业的管

免费才是王道:盘点开发者须知的25个免费数据可视化工具

原文 http://www.csdn.net/article/2013-05-10/2815214-free-data-visualization-25-best-tools 摘要:数据可视化可以帮助人们直观的从数据中获得信息,其作用可见一斑.然而数据可视化的过程却并不是件容易的事情,这里给大家分享多个领域可以用到的25个免费数据可视化工具. 如果你还没意识到许多工具可以帮助你完成这项工作,数据可视化可能会成为一个非常头痛的问题.数据可视化的宗旨是借助图形化手段,让人们更 容易的去理解数据.数据

21款超实用的酷炫「数据可视化工具」

  辛辛苦苦分析一堆大数据,竟然没人看!到底怎么办?俗话说,有图有真相,一图胜千言,取悦了眼球,剩下的都好说.如果你正着手于从数据中洞察出有用信息,那你所需要的正是--数据可视化.本文挖掘了21款炙手可热的数据可视化工具,干净利落的高颜值信息图,就要这样做! 译者微信公众号:特赞Design,欢迎关注唷. FusionCharts FusionCharts Suite XT不仅可以为带给你漂亮的图表,还能帮你制作出生动的动画.巧妙的设计和丰富的交互性.它在PC端.Mac.iPad.iPhone和

20个数据可视化工具点评

如今学习应用数据可视化的渠道有很多,你可以跟踪一些专家博客,但更重要的一点是实践/实操,你必须对目前可用的数据可视化工具有个大致了解.以下是Netmagzine列举的二十大数据可视化工具,无论你是准备制作简单的图表还是复杂的图谱或者信息图,这些工具都能满足你的需要.更加美妙的是,这些工具大多免费. 第一部分:入门级工具 1.Excel Excel的图形化功能并不强大,但Excel是分析数据的理想工具,上图是Excel生成的热力地图 作为一个入门级工具,Excel是快速分析数据的理想工具,也能创建

二十大数据可视化工具点评(下)

  第五部分:进阶工具 如果你准备用数据可视化做一些"严肃"的工作,那么你可能不会对在线可视化工具或者web小程序有太大兴趣,你需要的是桌面应用和编程环境.   16. Processing Processing是数据可视化的招牌工具.你只需要编写一些简单的代码,然后编译成Java.目前还有一个Processing.js项目,可以让网站在没有Java Applets的情况下更容易地使用Processing.由于端口支持Objective-C,你也可以在iOS上使用Processing.

有哪些不为人知的超实用数据可视化工具?

  碰巧自己也是一个工具迷,对数据可视化和信息可视化也有一点点研究,在这分享一些简单好玩的可视化工具,大家可能会用得上. 说到可视化,肯定少不了信息图表,首先介绍几个信息图表制作神器: 神器1:在线信息图表制作工具 国外的信息可视化行业发展得相当成熟,这也催生了不少在线信息图表制作工具,其中比较知名的有3个,利用它们,五分钟你就能做出一张超好看信息图表! (1) Infogram 较早的一个在线制作工具,亮点是支持实时数据刷新,而且制作的信息图表支持在多终端展示. (2) Venngage 这款

数据可视化工具大集合

所谓数据可视化是对大型数据库或数据仓库中的数据的可视化,它是可视化技术在非空间数据领域的应用,使人们不再局限于通过关系数据表来观察和分析数据信息,还能以更直观的方式看到数据及其结构关系. 数据可视化技术的基本思想是将数据库中每一个数据项作为单个图元元素表示,大量的数据集构成数据图像, 同时将数据的各个属性值以多维数据的形式表示,可以从不同的维度观察数据,从而对数据进行更深入的观察和分析. 内容目录 Awesome dataviz JavaScript 工具 图表库 图形图表库 地图(Maps)

Linux 数据可视化工具

Linux 上用来实现数据的图形可视化的应用程序有很多,从简单的 2-D 绘图到 3-D 制图,再到科学图形编程和图形模拟.幸运的是,这方面的工具有很多开放源码实现,包括 gnuplot.GNU Octave.Scilab.MayaVi.Maxima 等.每个工具都有自己的优缺点,并且都是针对不同的应用程序而设计的.对这些开放源码图形可视化工具进行一下探索,有助于我们更好地决定哪个工具最适合我们的应用程序. 内容 Gnuplot GNU Octave Scilab MayaVi Maxima 展