多维度数据可视化的策略与艺术

描述性分析是与数据科学项目,甚至特定研究相关的任何分析生命周期的核心组成部分之一。数据聚合、摘要和可视化是支持这一数据分析领域的一些主要支柱。自从商业智能时代以来,甚至在这个人工智能时代,数据可视化时代由于其有效地抽象出正确的信息、清楚和容易地理解、解释结果,因此它已成为一种强有力的工具并被各公司、单位广泛采用。然而,处理通常具有两个以上属性的多维数据集,是个很棘手的问题,因为我们的数据分析和通信介质通常限于两个维度。在本文中,我们将探讨一些有效的多维可视化数据策略(范围从1维到6维)。可视化的动机一张图片胜过千言万语

这是一个我们都熟悉、非常流行的习语,为我们理解和利用数据可视化作为我们分析有效工具提供了足够灵感、动力。永远记住“有效的数据可视化既是科学,更是艺术”。在开始之前,还想引用一句留言,并强调数据可视化的必要性。“图片的最大价值在于它迫使我们注意到我们从未预料到的东西。” -- 约翰.图基快速了解可视化

我假设普通读者知道用于绘制、可视化数据的基本图表,因此本文不会详细解释,但这里的实践实验中会包含绘制基本图、表的大多数。数据可视化应该利用数据来传达,“清晰、精确和有效率”的模式和见解,正如可视化先驱和统计学家爱德华·塔夫特所强调的。

结构化数据通常包括由行表示的数据观察,和由列表示的数据属性。每列也可以作为数据集的特定维度调用。最常见的数据类型包括连续的数字数据和离散的分类数据。因此,任何数据可视化将基本上以易于理解的可见性,描绘一个或多个数据属性,如散点图、直方图、箱形图等。我将介绍单变量(一维)和多变量(多维)数据可视化策略。我们将在这里使用Python机器学习系统,我们建议你检查是否装有数据分析和可视化的框架,包括pandas、matplotlib,seaborn、plotly和bokeh。除此之外,如果你有兴趣使用数据制作美观且有意义的可视化,那么了解D3.js也是必要的。讲解很容易,但请给出可视化(和代码)!

让我们开始,而不是喋喋不休地谈论理论和概念。我们将使用UCI公开数据集提供的葡萄酒质量数据集。该数据实际上由两个数据集组成,描述了葡萄牙“Vinho Verde”葡萄酒的红色和白色变体的各种属性。本文中的所有分析都可以在我的GitHub中找到。

首先加载依赖库:

import pandas as pd

import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

import matplotlib as mpl

import numpy as np

import seaborn as sns

%matplotlib inline

主要使用matplotlib和seaborn作为我们的可视化框架。让我们看看一些基本数据预处理后的数据。

我们通过合并红葡萄酒和白葡萄酒样品有关的数据集来创建单一的葡萄酒数据集。我们还基于葡萄酒样本quality属性创建一个新的分类变量quality_label。我们现在来看看数据。

wines.head()

葡萄酒质量数据集

很明显,葡萄酒样品有几个分类属性特征。每个观察属于红色或白色葡萄酒样品,属性是从物理化学试验中测量得到的特定属性或性质。如果您想了解每个属性的详细说明,可以查看github的jupyter notebook,但这些名称非常易懂。让我们对其中一些感兴趣的属性进行快速的基本描述性摘要统计。

葡萄酒类型的基本描述性统计

对比、比较不同葡萄酒类型的统计量非常容易。注意一些属性的明显差异。稍后我们将在一些可视化中强调这些。单变量分析

单变量分析基本上是最简单的数据分析或可视化形式,我们只关注分析一个数据属性或变量并将其可视化(一维)。

在一维中可视化数据(1-D)

一个可视化的所有数字数据及其分布最快捷,最有效的方法,是使用pandas画直方图

将属性可视化为一维数据

上面的图表可以很好地了解任何属性的基本数据分布。

让我们深入了解一个连续的数字属性。基本上,直方图或密度图在理解如何为该属性分配数据方面非常有效。

可视化一维连续的数字数据

从上面的情节可以看出,sulphates葡萄酒的分布存在明显的正确偏差 。

离散的分类数据属性可视化略有不同,条形图是执行相同操作的最有效方法之一。你也可以使用饼图,但一般不使用它们,尤其是当不同类别的数量超过三个时。

可视化一维离散的分类数据

让我们继续看看更高维的数据。多变量分析

多变量分析是很有乐趣的,但也很复杂性。在这里,我们分析多个数据维度或属性。多变量分析不仅涉及检查分布,还涉及这些属性之间的潜在关系、模式和相关性。如有必要,你还可以根据手头要解决的问题利用统计推理、假设检验来检查不同特征、特征组合的统计意义。二维数据可视化(2-D)

检查不同数据属性之间潜在关系或相关性的最佳方法之一是利用两两相关矩阵并将其描述为热图。

使用相关热图可视化二维数据

热图中的梯度根据相关强度而变化,你可以清楚地看到很容易发现它们之间具有强相关性的潜在属性。另一种可视化方法是在感兴趣的属性中使用成对散点图。

使用成对散点图可视化二维数据

基于上面的图,可以看到散点图也是观察数据属性的二维潜在关系或模式的一种不错的方式。关于成对散点图的一个重要注意事项是这些图实际上是对称的。任何一对属性的散点图(X, Y)看起来都与对应(Y, X)的不同,只是因为垂直和水平比例不同。

将多个属性的多变量数据可视化在一起的另一种方法是使用平行坐标。

用于可视化多维数据的平行坐标

基本上,在如上所述的这种可视化中,点被表示为连接的线段。每条垂直线代表一个数据属性。所有属性中的一组完整连接线段代表一个数据点。因此,倾向于聚类的点将更加接近。通过观察,我们可以清楚地看到,与白葡萄酒相比density ,红葡萄酒略高一些。residual sugar和total sulfur dioxide,白葡萄酒比红葡萄酒更高。对于fixed acidity红葡萄酒更高。

让我们看一下我们可以看到两个连续的数字属性的方法。散点图和关节图不仅可以检查模式、关系,还可以查看属性的各个分布。

使用散点图和关节图可视化二维连续数值数据

如何可视化两个离散的类别属性?一种方法是针对其中一个分类维度利用单独的图(子图)或构面。

使用条形图和子图(面)可视化二维离散的分类数据

虽然这是可视化分类数据的好方法,但正如您所看到的,利用matplotlib已经编写了大量代码。另一个好方法是在单个图中使用堆叠条或多个条来表示不同的属性。我们可以seaborn轻松地利用同样的方法。

在单个条形图中可视化二维离散的分类数据

这绝对看起来更干净,您还可以从这个单独的图中轻松地比较不同的类别。

让我们看看二维可视化混合属性(数字和类别一起)。一种方法是使用faceting \ subplots以及通用直方图或密度图。

在二维利用平面和直方图\密度图中可视化混合属性

虽然这很好,但我们再次提供了许多样板代码,我们可以通过利用seaborn甚至在单个图表中描绘图表来避免这些代码。

在二维中利用多个直方图来表示混合属性

可以看到上面生成的图表清晰简洁,我们可以轻松地轻松比较各个版本。除此之外,箱形图是基于分类属性中的不同值有效地描绘数字数据组的另一种方式。箱形图是了解数据中四分位数值以及潜在异常值的好方法。

Box Plots是二维混合属性的有效表示

另一个类似的可视化是小提琴图,这是使用核密度图(以不同值描绘数据的概率密度)可视化分组数值数据的另一种有效方式。

小提琴绘图作为二维混合属性的有效表示

可以清楚地看到上面的不同葡萄酒quality、sulphate(硫化)对应的不同density图。

可视化数据直到二维非常简单,但随着维度(属性)的数量开始增加而开始变得复杂。原因是我们受到显示媒体和环境的二维约束。

对于三维数据,我们可以通过借助子图或者面,利用z轴引入虚拟的深度概念。

然而,对于高于三维的数据,使其可视化变得更加困难。高于三维的最佳方法是使用绘图面,颜色,形状,大小,深度等。还可以通过随时间为其他属性制作动画图来将时间用作维度(考虑时间是数据中的维度)。三维可数据可视化(3-D)考虑到数据中的三个属性或维度,我们可以通过考虑成对散点图并引入颜色或色调的概念来将它们可视化,以分离出分类维度中的值。

使用散点图和色调 (颜色)可视化三维数据

上面的图表使您可以检查相关性模式,并比较葡萄酒组。比如,我们可以清楚地看到total sulfur dioxide与residual sugar,在白葡萄酒中比葡萄酒更高。

让我们看一下可视化三个连续数字属性的策略。一种方法是将两个维度表示为常规长度 (x轴)和宽度(y轴),并且还采用深度(z轴)的概念作为第三维度。

通过引入深度概念可视化三维数字数据

我们仍然可以利用常规的2-D轴并引入尺寸的概念作为第三维(基本上是气泡图),其中点的多少表示第三维的数量。

通过引入大小的概念可视化三维数字数据

因此,可以看到上面的图表不是传统的散点图,而是更多的不同尺寸(气泡)的气泡图,大小代表residual sugar。当然,你不会总能在数据中找到确定的模式。本例中,我们的模式是:第三个维度随着其他两个维度而变化的大小。

为了可视化三个离散的分类属性,我们可以使用传统的条形图,我们可以利用色调的概念以及方面或子图来支持额外的第三维。该seaborn框架可帮助我们将代码保持在最低限度并有效地绘制。

通过引入色调和 刻面的概念来可视化三维分类数据

上面的图表清楚地显示了与每个维度相关的频率,可以看到它在理解相关见解方面的简单性和有效性。

考虑到三个混合属性的可视化,我们可以使用hue的概念在一个分类属性中分离我们的组,同时使用散点图等常规可视化来可视化数字属性的两个维度。

利用散点图和色调概念可视化三维混合属性

因此,色调作为类别或组的良好分离器,并且如上所述没有非常弱的相关性,可以从这些图中理解,与白色相比,红葡萄酒sulphates略高。也可以使用核心密度图来理解三维数据,而不是散点图。

利用核密度图和色调概念,在三维中可视化混合属性

非常明显,红葡萄酒样品sulphate 与白葡萄酒相比具有更高的水平。还可以根据色调强度查看密度浓度。

如果我们在三个维度中处理多个分类属性,我们可以使用hue和一个常规轴来可视化数据,并使用可视化,如箱形图或小提琴图来可视化不同的数据组。

利用分裂小提琴图和色调概念,在三维中可视化混合属性

在上面的图中,我们可以看到,在右边3-d的可视化中,我们用x轴表示quality和用色调表示wine_type。我们可以清楚地看到一些有趣的见解,如红葡萄酒与白葡萄酒相比volatile acidity更高。

您还可以考虑使用箱形图以类似的方式表示具有多个分类变量的混合属性。

在三维杠杆箱图和色调概念中可视化混合属性

我们可以看到,无论是quality和quality_label属性,葡萄酒alcohol含量都会随着质量的提高而增加。另外红葡萄酒往往有一个较高的alcohol含量中位数,相对于质量等级分类。但是,如果我们检查质量等级,我们可以看到,对于评级较低的葡萄酒(3和4),白葡萄酒的中值alcohol含量高于红葡萄酒样品。另外,与白葡萄酒相比,红葡萄酒的中值alcohol含量略高。可视化四维数据(4-D)根据我们之前的讨论,我们利用图表的各种组件可视化多个维度。在四维中可视化数据的一种方法是使用深度和色调作为传统图中的特定数据维度,如散点图。

利用散点图和色调和深度的概念,在四维中可视化数据

该wine_type属性由色调表示,这从上面的图中非常明显。此外,虽然解释这些可视化开始越来越困难,因为情节的复杂性,你仍然可以收集信息,比如红葡萄酒fixed acidity的较高,residual sugar在白葡萄酒较高。当然,如果alcohol、fixed acidity之间存在某种关联,我们可能会看到逐渐增加或减少的数据点显示一些趋势。

另一种策略是保持二维图,但使用色调和数据点大小作为数据维度。通常,这将是一个类似于我们之前可视化的气泡图。

利用气泡图以及色调和 大小的概念,在四维中可视化数据

我们用色调来表示wine_type和数据点的大小来表示residual sugar。跟我们前面的图表得到的类似,表示白葡萄酒的气泡较大,表示白葡萄酒residual sugar值较高。

如果我们有更多的两个分类属性来表示,我们可以重用我们利用色调和构面的概念来描绘这些属性和常规图,如散点图来表示数字属性。我们来看几个例子。

利用散点图和色调和 刻面的概念,在四维中可视化数据

我们可以轻松发现多种模式,从而验证了这种可视化的有效性。volatile acidity在白葡萄酒中低,并且高品质的葡萄酒具有较低的酸度水平。同样基于白葡萄酒样品,高品质的葡萄酒具有更高水平alcohol和低质量的葡萄酒具有最低水平alcohol!

让我们用一些其他属性来表示一个类似的例子,并在四个维度上构建一个可视化。

利用散点图和色调和 刻面的概念,在四维中可视化数据

我们清楚地看到,如果你对葡萄酒成分具备一些基础知识,那么高品质的葡萄酒total sulfur dioxide含量较低是非常重要的。我们也看到,total sulfur dioxide对于红葡萄酒,低于白葡萄酒。volatile acidity,红葡萄酒的含量更高。可视化五维数据(5-D)!

再次按照我们在上一节中所遵循的类似策略,以五维方式可视化数据,我们利用各种绘图组件。让我们使用深度,色调和大小来表示除了表示其他两个维度的常规轴之外的三个数据维度。由于我们使用尺寸的概念,我们将基本上绘制三维气泡图。

利用气泡图以及色调,深度和 大小的概念,以五维方式可视化数据

此图表描述了我们在上一节中讨论的相同模式和见解。然而,我们还可以看到,用点大小代表total sulfur dioxide,白葡萄酒total sulfur dioxide与红葡萄酒相比具有更高的水平。

我们还可以使用facet和hue来代替深度,以在这五个数据维度中表示多个分类属性。表示大小的属性之一可以是数字(连续)或甚至是分类(但我们可能需要用数字点大小的数字来表示它)。虽然由于缺乏分类属性,我们在此处没有描述,但请随意在您自己的数据集上进行尝试。

利用气泡图以及色调,刻面和 大小的概念,在五维中可视化数据

这基本上是一种可视化相同绘图的替代方法,我们之前为五个维度绘制了该绘图。虽然在观察我们之前绘制的绘图时,深度的额外维度可能会使许多人感到困惑,但由于刻面的优势,该绘图仍然有效地保留在2维平面上,因此通常更有效且易于解释。

我们已经可以看到处理如此多的数据维度变得越来越复杂!如果有人在想,为什么不添加更多尺寸?让我们继续!可视化六维数据(6-D)!!

让我们在可视化中添加另一个数据维度。除常规的两个轴外,我们将利用深度,色调,大小和形状四个特性来描绘所有六个数据维度。

利用散点图和色调,深度,形状和 大小的概念,在六维中可视化数据

用形状表示quality_label:用正方形表示优等,用X标记表示中等和用圆形表示低级。用色调表示wine_type,用深度表示fixed acidity,用数据点大小表示total sulfur dioxide。

解释这可能看起来有点费力,但我们可以只考虑几个组合来了解其意义:

1. 考虑到形状和y轴,我们提供高品质和中等品质的葡萄酒,与低品质的葡萄酒相比具有更高的alcohol水平。

2. 考虑到色调和大小,与红葡萄酒相比白葡萄酒total sulfur dioxide的含量更高。

3. 考虑到深度和色调,白葡萄酒fixed acidity与红葡萄酒相比含量较低。

4. 考虑色调和x轴,红葡萄酒具有较低水平residual sugar。

5. 考虑到色调和形状,与红葡萄酒相比,白葡萄酒似乎拥有更多高品质的葡萄酒(可能是由于白葡萄酒样本量较大)。

我们还可以通过删除深度组件来构建6-D可视化,并使用构面代替分类属性。

利用散点图和色调,刻面和 大小的概念,在六维中可视化数据

因此,在这种情况下,我们利用facet和hue来表示三个分类属性和两个常规轴和大小,以表示我们的6-D数据可视化的三个数值属性。结论

数据可视化既是一科学,也是一门艺术。这篇文章很长,仔细阅读下来,并能够大致理解,需要一定的耐心。本文不是为让读者记住任何东西,也不是为可视化数据提供一套固定的规则。这里的主要目标是理解和学习一些有效的数据可视化策略,特别是当维度数量开始增加时。从而更形象、直观的理解特征、特征组合与目标变量之间的关系、模式!

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();