描述性分析是與數據科學項目,甚至特定研究相關的任何分析生命周期的核心組成部分之一。數據聚合、摘要和可視化是支持這一數據分析領域的一些主要支柱。自從商業智能時代以來,甚至在這個人工智能時代,數據可視化時代由于其有效地抽象出正確的信息、清楚和容易地理解、解釋結果,因此它已成為一種強有力的工具并被各公司、單位廣泛采用。然而,處理通常具有兩個以上屬性的多維數據集,是個很棘手的問題,因為我們的數據分析和通信介質通常限于兩個維度。在本文中,我們將探討一些有效的多維可視化數據策略(范圍從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)檢查不同數據屬性之間潛在關系或相關性的最佳方法之一是利用兩兩相關矩陣 并將其描述為熱圖。 使用相關熱圖可視化二維數據 熱圖中的梯度根據相關強度而變化,你可以清楚地看到很容易發現它們之間具有強相關性的潛在屬性。另一種可視化方法是在感興趣的屬性中使用成對散點圖。 使用成對散點圖可視化二維數據 基于上面的圖,可以看到散點圖也是觀察數據屬性的二維潛在關系或模式的一種不錯的方式。
將多個屬性的多變量數據可視化在一起的另一種方法是使用平行坐標。 用于可視化多維數據的平行坐標 基本上,在如上所述的這種可視化中,點被表示為連接的線段。每條垂直線代表一個數據屬性。所有屬性中的一組完整連接線段代表一個數據點。因此,傾向于聚類的點將更加接近。通過觀察,我們可以清楚地看到,與白葡萄酒相比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數據可視化的三個數值屬性。 結論數據可視化既是一科學,也是一門藝術。這篇文章很長,仔細閱讀下來,并能夠大致理解,需要一定的耐心。本文不是為讓讀者記住任何東西,也不是為可視化數據提供一套固定的規則。這里的主要目標是理解和學習一些有效的數據可視化策略,特別是當維度數量開始增加時。從而更形象、直觀的理解特征、特征組合與目標變量之間的關系、模式! |
|
來自: 博容書屋 > 《大數據理論+技術》