设为首页 | 多彩彩票注册-多彩彩票平台
当前位置: 主页 > T袖 > 在Python中使用PCA和t-SNE可视化高维数据集
在Python中使用PCA和t-SNE可视化高维数据集
发表日期:2019-05-08 22:18| 来源 :本站原创 | 点击数:
本文摘要:【IT168 方案】任何与数据相关的挑战的第一步都是从研究数据本身起头的。例如,能够通过查看某些变量的分布或查看变量之间的潜在相关性来研究。 目前的问题是,良多数据集都有大量的变量。换句话说,它们是多维度的,数据沿着这些维度分布。如许的话,可视化

  【IT168 方案】任何与数据相关的挑战的第一步都是从研究数据本身起头的。例如,能够通过查看某些变量的分布或查看变量之间的潜在相关性来研究。

  目前的问题是,良多数据集都有大量的变量。换句话说,它们是多维度的,数据沿着这些维度分布。如许的话,可视化地研究数据会变得很有挑战性,大大都时候以至不成妙手工完成。可是,研究数据时,可视化数据长短常主要的。因而,理解若何可视化高维数据集是环节,这能够利用降维手艺来实现。这篇文章将重点引见两种降维手艺手艺:PCA和t-SNE。

  关于这两项手艺,后面会细致引见,此刻,让我们先获得一些高维数据。

  在本文中,我们将利用MNIST数据集。无需手动下载数据集,由于我们能够通过利用Scikit Learn获取数据集。

  起首把所有的库都预备好。

  然后起头加载数据

  把矩阵和向量转换为Pandas数据框,这与R言语中利用的数据框很是类似,使我们更容易进行画图。

  为了避免在计较中利用全数70000个数据,所以我们将采用数据的随机子集。随机化很主要,由于数据会议按其标签排序,即前7000摆布是零)。为了确保随机化,建立数字0-69999的随机陈列,以便稍后为计较和数据可视化进行选择。

  我们此刻有了数据框和随机向量。先来查抄一下这些数字,并为此生成30个随机图像。

  此刻能够起头考虑若何区分0和1、2等等。例如,若是您是邮局,如许的算法能够协助您利用机械读取和分类手写信封,而不是让人类如许做。明显,此刻我们有很是先辈的方式来做到这一点,可是这个数据集仍然供给了一个很是好的例子,能够让我们看到降维的具体方式以及它们的工作环境。

  这些图像根基上都是28×28像素,因而总共有784个“维度”,每个维度包含一个特定像素的值。

  我们要做的是大幅削减维度数量,同时尽可能多地保留消息中的“变化”。接下来,让我们领会什么是主成分阐发。

  利用PCA降维

  PCA是一种削减数据集维数的同时保留大部门消息的手艺。它利用一些维度之间的相关性,并试图通过供给起码的变量,并尽可能地保留关于原始数据分布的最多消息。这个过程并不是简单的猜测,而是利用称为数据矩阵的特征值和特征向量进行计较。协方差矩阵的特征向量可以或许表现数据变化的次要标的目的,而且是数据集变化的最次要标的目的。

  起首从二维图和三维图起头,从原始的784维度生成前三个次要构成部门,并看到总数据集中有几多变化。

  前两个组件大约占整个数据集变化的25%,这能否足以将分歧的数据分隔呢?建立第一个和第二个主成分的散点图,并用分歧的颜色为每个分歧类型的数据着色。若是能够的话,不异类型的数据将被堆积在一路,这意味着前两个次要组件现实上能反映关于特定命字类型的大量消息。

  从图中我们能够看到,前两个组件确实包含着一些关于特定命据的消息,可是如许明显不足以将分歧的数据分隔。我们还能够用t-SNE手艺来进行降维。接下来,我们来摸索用t-SNE手艺进行可视化数据集操作。

  与3d版本的不异操作

  t-SNE是另一种降维的手艺,出格合用于高维数据集的可视化。与PCA相反,它不是一种数学手艺,而是一种概率手艺。 t-SNE的工作道理如下:

  “t-SNE最小化了两个分布之间的差别:一个是怀抱输入对象成对类似性的分布,另一个是怀抱嵌入中响应低维点成对类似性的分布。”

  素质上,这意味着它会查看输入到算法中的原始数据,并通过婚配两个分布来查看若何利用较少的维度来最佳地展现数据。可是它的体例并不简洁,因而利用这种手艺具有较多的限制。例如,在维度数据很是高的环境下,您可能需要在利用t-SNE之前使用另一种降维手艺:

  t-SNE的另一个错误谬误是,因为t-SNE在对象数N中是按比例平方缩放,因而其合用性仅限于只要几千个输入对象的数据集。除此之外,其过程会变得太慢而不适用,内存要求也会变高。

  因而,在本文的其余部门中,我们将利用该算法的Scikit-Learn实现。

  与上面的建议相反,我们将起首测验考试在数据的现实维度上运转算法(784)。为了确保系统不会在内存和功耗或者时间方面发生承担,只利用前10000个样本来运转算法。为了便利稍后进行比力,我们还将在子集上再次运转PCA。

  此刻我们有了两个维度成果,接下来建立两个维度的散点图,并按照各自的标签为每个样本上色,来再次可视化它们。

  这曾经比我们之前利用的PCA可视化有了较着的改良。我们能够看到这些数字很是清晰地堆积在它们本人的子组中。若是此刻利用聚类算法来挑选分手的数据,我们能够相当精确地为标签分派新点,来比力PCA和T-SNE:

  记住这些数据,接下来,我们在将数据输入t-SNE算法之前再次利用PCA削减维数。起首建立一个新的PCA算法生成的包含50个维度的数据集,然后利用这个数据集施行t-SNE:

  令人惊讶的是,前50个组件大致占领了数据总变化的85%摆布。

  此刻,测验考试将这些数据输入t-SNE算法。为了确保算法不占用太多内存和CPU,此次我们将利用此中10000个样本。代码部门在文末附录部门,它发生的成果如下:

  从这个图中我们能够清晰地看到,所有的样本清晰地分手隔来,并以各自的数据类型分组。接下来利用聚类算法,并试图识别集群,或利用这两个维度作为另一个算法的输入(雷同于神经收集)。

  我们曾经摸索了若何利用各类降维手艺,并用二维散点图可视化高维数据。这个过程没有涉及到现实的数学,而是依赖于Scikit-Learn实现的。

(责任编辑:admin)
http://gscw88.com/Tx/684/
热门推荐
  • 娱乐资讯
  • 社会百态