主要内容

多元数据可视化

这个例子展示了如何使用不同的统计图来可视化多元数据。许多统计分析只涉及两个变量:一个预测变量和一个响应变量。这些数据很容易用二维散点图、二元直方图、箱线图等来可视化。还可以使用3D散点图可视化三维数据,或者使用编码了第三个变量(例如颜色)的2D散点图。然而,许多数据集涉及更多的变量,使直接可视化更加困难。这个例子探索了在MATLAB®中使用统计学和机器学习工具箱™可视化高维数据的一些方法。

在本例中,我们将使用carbig数据集,这个数据集包含了从1970年到1980年大约400辆汽车的各种测量变量。我们将使用燃油效率(每加仑英里数,MPG)、加速(从0-60英里/秒的时间)、发动机排气量(立方英寸)、重量和马力的值来演示多变量可视化。我们将使用柱面的数量来分组观察。

负载carbigX = [MPG、加速度、位移、重量、马力);varNames = {“英里”“加速”“位移”“重量”“马力”};

散点图矩阵

通过低维子空间查看切片是部分绕过二维或三维限制的一种方法。例如,我们可以使用gplotmatrix函数显示我们五个变量之间的所有二元散点图的数组,以及每个变量的单变量直方图。

图gplotmatrix (X,[],气缸,“c”“b”“我是‘g’“r”],[][],假);文本([。replat (- 1,1,5), varNames,“字形大小”8);文本(repmat(点1 5),(。58.62 . 41.25 .02] varNames,“字形大小”8“旋转”, 90);

每个散点图中的点用颜色表示圆柱体的数量:蓝色表示4个圆柱体,绿色表示6个,红色表示8个。也有少数5缸汽车,和旋转发动机汽车被列为有3缸。这一组图使得在变量对之间的关系中找出模式变得容易。然而,在更高维度中可能存在重要的模式,而这些模式在这个图中不容易识别。

平行坐标图

散点图矩阵只显示二元关系。然而,还有其他方法可以同时显示所有变量,允许您研究变量之间的高维关系。最直接的多元绘图是平行坐标绘图。在这个图中,坐标轴都是水平排列的,而不是像通常的笛卡尔图中那样使用正交轴。在图中,每个观测值都表示为一系列相连的线段。例如,我们可以画出4个、6个或8个汽缸的所有汽车的图,并按组进行颜色观察。

Cyl468 = ismember(气缸,[4 68]);parallelcoords (X (Cyl468:)“集团”气缸(Cyl468),...“标准化”“上”“标签”varNames)

图中的水平方向代表坐标轴,竖直方向代表数据。每个观测值由五个变量的测量值组成,每一个测量值都表示为对应的线与每个坐标轴相交的高度。因为这五个变量的范围有很大的不同,所以这张图是用标准化的值绘制的,其中每个变量都标准化了,均值和单位方差都为零。例如,通过颜色编码,图表显示,8缸汽车的MPG和加速度值通常较低,而排量、重量和马力值较高。

即使按组进行颜色编码,包含大量观测值的平行坐标图也很难读取。我们还可以绘制平行坐标图,其中仅显示每组的中值和四分位数(25%和75%点)。这使得群体之间的典型差异和相似性更容易区分。另一方面,最有趣的可能是每个组的异常值,而此图根本没有显示它们。

parallelcoords (X (Cyl468:)“集团”气缸(Cyl468),...“标准化”“上”“标签”varNames,分位数的或25)

安德鲁斯情节

另一种类似的多变量可视化是Andrews图。该图将每个观测值表示为间隔[0,1]上的平滑函数。

andrewsplot (X (Cyl468:)“集团”气缸(Cyl468),“标准化”“上”

每个函数都是傅里叶级数,其系数等于相应的观测值。在这个例子中,级数有五项:一个常数,两个周期为1和1/2的正弦项,和两个相似的余弦项。由于三个前导项对函数形状的影响在安德鲁斯图中最明显,所以前三个变量中的模式往往是最容易识别的。

在t = 0时组之间有明显的差异,说明第一个变量MPG是4、6、8缸车之间的区别特征之一。更有趣的是,在t = 1/3左右,三组之间的差异。将这个值代入Andrews plot函数的公式中,我们得到一组系数,这些系数定义了不同组之间变量的线性组合。

t1 = 1/3;(1 /√(2)罪(2 *π* t1)因为(2 *π* t1)罪(4 *π* t1)因为(4 *π* t1))
Ans = 0.7071 0.8660 -0.5000 0.8660 -0.5000

从这些系数中,我们可以看出,区分4缸车和8缸车的一种方法是,前者的MPG和加速度值较高,而排量、马力、特别是重量值较低,而后者的情况正好相反。这和我们从平行坐标图得出的结论是一样的。

字形的情节

可视化多变量数据的另一种方法是使用“符号”来表示维度。这个函数glyphplot万博1manbetx支持两种类型的符号:星星和切尔诺夫的脸。例如,这里是汽车数据中的前9个模型的星图。星形中的每一个辐条代表一个变量,辐条长度与观测的变量值成正比。

h = glyphplot (X (1:9,:)“字形”“星”“varLabels”varNames,“obslabels”、模型(1:9,:));集(h (:, 3),“字形大小”8);

在一个实时的MATLAB图形窗口中,这个图形将允许使用数据游标对数据值进行交互探索。例如,点击福特都灵的星星右边的点,它的MPG值是17。

字形图和多维标度

在网格中绘制星星,没有特定的顺序,可能会导致令人困惑的图形,因为相邻的星星可能最终看起来非常不同。因此,眼睛可能无法捕捉到光滑的图案。将多维缩放(MDS)与符号图结合使用通常很有用。为了说明这一点,我们首先选择1977年的所有汽车,并使用zscore函数将五个变量中的每一个标准化,使其均值和单位方差均为零。然后我们将计算这些标准观测值之间的欧氏距离作为不同的度量。在实际应用程序中,这种选择可能过于简单,但这里只是为了进行说明。

找models77 = ((Model_Year = = 77));不同= pdist (zscore (X (models77,:)));

最后,我们使用mdscale在二维中创建一组位置,其间隔距离近似于原始高维数据之间的异同点,并使用这些位置绘制符号。2D图中的距离可能只是粗略地再现了数据,但对于这种类型的图来说,这已经足够了。

Y = mdscale(不同,2);glyphplot (X (models77:)“字形”“星”“中心”, Y,...“varLabels”varNames,“obslabels”模型(models77:),“半径”5);标题(“1977年”);

在这个图中,我们使用MDS作为降维方法,来创建一个2D图。通常这意味着信息的丢失,但是通过绘制符号,我们已经将所有高维信息合并到数据中。使用MDS的目的是使数据的变化具有一定的规律性,以便更容易看到符号之间的模式。

就像之前的情节一样,交互式探索将在实时图形窗口中实现。

另一种字形是切诺夫脸。这个符号将每次观察的数据值编码成面部特征,比如脸的大小、脸的形状、眼睛的位置等。

glyphplot (X (models77:)“字形”“脸”“中心”, Y,...“varLabels”varNames,“obslabels”模型(models77:));标题(“1977年”);

在这里,两个最明显的特征,面部大小和相对额头/下巴大小,编码MPG和加速度,而额头和下巴形状编码位移和重量。两眼之间的宽度表示马力。值得注意的是,很少有宽额头和窄下巴的脸,反之亦然,这表明变量位移和体重之间存在正线性相关。这也是我们在散点图矩阵中看到的。

特征与变量的对应关系决定了什么关系最容易看到glyphplot允许选择容易改变。

关闭