密度图的密度估计_箱形图、小提琴图、直方图……统统可以卡通化!
對(duì)于數(shù)據(jù)科學(xué)家來(lái)說(shuō),可視化工具比比皆是,因此,退一步去鉆研每種可視化的類(lèi)型及其適用的最佳案例就變得十分重要。為了發(fā)揮工具的最佳效用,有時(shí)可以考慮將其擬人化,甚至是將其變成卡通人物。
為了更好地理解圖表,本文將其設(shè)計(jì)成了一系列卡通人物。
背景——數(shù)據(jù)集
這份有關(guān)谷物的數(shù)據(jù)集(https://www.kaggle.com/crawford/80-cereals)來(lái)自Kaggle,可用以制作各類(lèi)圖表。下載并保存該數(shù)據(jù)集,就可以運(yùn)行以下繪圖代碼:
import pandas as pd import numpy as npimport matplotlib.pyplot as pltimport seaborn as sns df = pd.read_csv(‘./dataset/cereal.csv’)df[‘cal_per_cup’] = df.calories/df.cups # adding column to look at calorie content per cup rather than per serving具體而言,繪圖所需數(shù)據(jù)集中的每個(gè)樣本都必須具有定量值或連續(xù)值(例如熱量、纖維等非分類(lèi)變量),制圖的重點(diǎn)在于如何展示這些定量值。但同時(shí)一些分類(lèi)變量(例如谷物位于頂部、中部還是底部貨架)也必不可少,以便按照類(lèi)別劃分樣本,并展示出每種樣本的定量值。這一谷物數(shù)據(jù)集較好地融合了兩者。
分布族
這是一個(gè)幸福的大家庭——箱形圖、直方圖、小提琴圖、箱形圖。雖然它們長(zhǎng)相各異,但如果深入了解,你就會(huì)發(fā)現(xiàn)每種圖形都以相似的方式揭示數(shù)據(jù)集的構(gòu)成。爸爸媽媽:箱形圖Borat和Wanda
這個(gè)圖表家庭會(huì)告訴你,用大量不同的數(shù)據(jù)樣本測(cè)量同一個(gè)值的意義何在。無(wú)論數(shù)據(jù)集是正常或是已被扭曲,這些圖表都能找出樣本的中位數(shù)(三個(gè)孩子甚至可以判斷樣本是否為多模態(tài)分布)。
來(lái)認(rèn)識(shí)一下箱形圖Borat和Wanda(不過(guò)Wanda更喜歡別人叫她盒須圖)。他們?cè)谝淮伪拇簿蹠?huì)上相遇,Wanda在蹦床上彈跳時(shí),突然丟失了一個(gè)異常值,這個(gè)異常值砸到了Borat頭上。Borat把異常值還給了Wanda,然后他們就在一起了。
箱形圖喜歡蹦床,所以它們總是出現(xiàn)在x軸的高處和低處。Borat和Wanda志趣相投。Borat喜歡保持清爽的外表,表達(dá)總是簡(jiǎn)潔凝練。而Wanda則更喜歡打扮一些,在解釋一件事時(shí),她會(huì)多花點(diǎn)時(shí)間介紹細(xì)節(jié),因?yàn)樗M麆e人充分理解她所發(fā)現(xiàn)的異常現(xiàn)象。
箱形圖的實(shí)際應(yīng)用
“Borat”代表的是形式最簡(jiǎn)單的箱形圖(或稱(chēng)盒須圖),它能提供五條關(guān)于分布的信息:最大值、最小值、中位數(shù)、下四分位數(shù)及上四分位數(shù)。
注意,在下面的代碼中,圖表的默認(rèn)參數(shù)并不會(huì)將上下邊緣線(xiàn)設(shè)置成最大值和最小值,所以必須在代碼里加上“whis='range'”這一條件。
plt.figure(figsize=(4, 8))sns.boxplot(df.cal_per_cup, whis=’range’, orient=’v’, color=’#BFD0FE’)plt.ylabel(‘Calories Per Cup’)plt.title(‘Distribution of Calories in Cereals’);“Wanda”代表的是一種更為常見(jiàn)的箱形圖(有時(shí)被稱(chēng)為圖基箱形圖),能夠通過(guò)調(diào)整參數(shù),選擇性地傳達(dá)信息。它默認(rèn)將上邊緣設(shè)置在1.5四分位數(shù)范圍內(nèi)(IQR)的最大點(diǎn),IQR即下四分位數(shù)和上四分位數(shù)之間的差值。也就是說(shuō),上邊緣在上四位數(shù)1.5倍IQR處,下邊緣位于下四分位數(shù)1.5倍IQR處。上邊緣線(xiàn)以上、下邊緣線(xiàn)以下的值都被劃為異常值。
plt.figure(figsize=(4, 8))sns.boxplot(df.cal_per_cup, orient=’v’, color=’#F6A6A0')plt.ylabel(‘Calories Per Cup’)plt.title(‘Distribution of Calories in Cereals’);箱形圖可用于展示數(shù)據(jù)集的擴(kuò)散和偏離程度。如果想要對(duì)多種分布情況進(jìn)行比較,箱形圖也會(huì)派上用場(chǎng)。舉個(gè)例子,以下是根據(jù)貨架位置對(duì)谷物進(jìn)行分類(lèi)后,每杯谷物中熱量的分布情況。
plt.figure(figsize=(15, 8))sns.boxplot([‘Bottom Shelf’, ‘Middle Shelf’, ‘Top Shelf’], [df[df.shelf==1].cal_per_cup,df[df.shelf==2].cal_per_cup, df[df.shelf==3].cal_per_cup],orient=’v’, color=’#F6A6A0')plt.ylabel(‘Calories Per Cup’)plt.title(‘Distribution of Calories in Cereals by Shelf Placement’, fontsize=20);根據(jù)貨架位置對(duì)數(shù)據(jù)進(jìn)行分類(lèi),很快可以發(fā)現(xiàn)原始箱形圖中所有的異常值都來(lái)自頂層貨架上的谷物。這表明頂層貨架上谷物的熱量中位數(shù)是最高的,而且其中不僅有熱量最高的谷物,也有熱量最低的谷物。兒子:直方圖Howard
Borat和Wanda在一起后生了三個(gè)孩子,一個(gè)男孩(直方圖Howard)和一對(duì)雙胞胎女兒(小提琴圖Viola和Violet)。
這是直方圖Howard。他總喜歡躺著,給你一個(gè)直觀的展示,讓你自己做結(jié)論。他一般不喜歡掩飾條柱之間形成的階梯,也不愿費(fèi)力去展示處理數(shù)據(jù)的手段、數(shù)據(jù)的中位數(shù)或百分?jǐn)?shù)。不過(guò)心情愉悅時(shí),他也能好好打扮一番,清楚地展示出這些細(xì)節(jié)——甚至更多細(xì)節(jié)。Howard的邊緣參差不齊,這取決于他展示的內(nèi)容以及圖中所用的條柱數(shù)量。他出了名的懶,一般只有他老是躺著。不過(guò)偶爾時(shí)間合適時(shí),他也會(huì)站起來(lái),比如為了拍家庭合照。
直方圖的實(shí)際應(yīng)用
直方圖包含更多關(guān)于分布形狀的信息——是高斯分布、均勻分布還是多模態(tài)分布?通常來(lái)說(shuō),直方圖不會(huì)直觀地顯示中位數(shù)或四分位數(shù)的位置,但如果需要的話(huà),可以人為設(shè)置添加。
在創(chuàng)建直方圖時(shí),應(yīng)該認(rèn)真考慮所用條柱的數(shù)量,因?yàn)檫@會(huì)影響直方圖的清晰度,而且每一數(shù)據(jù)集所需要的條柱數(shù)量都不盡相同(為了更好地理解數(shù)據(jù),我經(jīng)常會(huì)同時(shí)在幾張圖表中設(shè)置不同數(shù)量的條柱)。在以下代碼中,將條柱數(shù)量分別設(shè)置為5、20、50,分別用于展示很少條柱,較多條柱和非常多條柱的情況。
plt.figure(figsize=(8, 4)) plt.hist(df.cal_per_cup, bins=20,color=’#BDFCC8', edgecolor=”#1F8F50")plt.ylabel(‘Calories Per Cup’)plt.title(‘Distribution of Calories in Cereals’);以上直方圖顯示了熱量分布。中間的圖表有20個(gè)條柱,可以清楚看到,其熱量分布接近于高斯分布,右側(cè)有一條比較長(zhǎng)的尾巴,接近正偏態(tài)分布。左圖中由于條狀數(shù)量太少,無(wú)法判斷熱量為50-200的谷物的分布情況(可能是高斯分布,可能是均勻分布,也可能是其他)。右圖則條柱過(guò)多,包含的信息過(guò)多,以致難以描述。
直方圖也可以用于比較多個(gè)數(shù)據(jù)集,但這并不是我的最?lèi)?ài)。可以將直方圖重疊(最多重疊三個(gè)數(shù)據(jù)集),也可以將幾個(gè)直方圖并列進(jìn)行比較。
此外,還可以在散點(diǎn)圖周?chē)鷦?chuàng)建邊緣直方圖,以展示一對(duì)定量變量之間的關(guān)系。下圖是有關(guān)谷物數(shù)據(jù)集中纖維與熱量關(guān)系的直方圖:
sns.jointplot(x=df.cal_per_cup, y=df.fiber, kind=’scatter’, color=’#1F8F50');此圖用于比較谷物中熱量的分布情況與纖維的分布情況。中部是用于比較兩個(gè)變量的散點(diǎn)圖,頂部是熱量分布的直方圖,右側(cè)是纖維分布的直方圖。雙胞胎女兒:小提琴圖Violia和Violet
Viola和Violet總是背對(duì)背—而且經(jīng)常(但并不總是!)互相對(duì)稱(chēng)。在直方圖Howard里經(jīng)常能看到坎坷的階梯,但Viola和Violet卻喜歡穿緊身褲,所以她們倆的表面總是那么光滑。
小提琴圖的實(shí)際應(yīng)用
小提琴圖具備箱形圖的一些特征,但它們同時(shí)也是基于核密度估計(jì)(KDE)建構(gòu)的——KDE能夠高效抹去你在直方圖中所能看見(jiàn)的階梯(所以我說(shuō)Viola和Violet總是穿著緊身褲,表面光滑)。
plt.figure(figsize=(4, 8))sns.violinplot(df.cal_per_cup, color=’#F0BFFF’, orient=’v’)plt.ylabel(‘Calories Per Cup’)plt.title(‘Distribution of Calories in Cereals’);和箱形圖一樣,小提琴圖也適用于將兩個(gè)數(shù)據(jù)集并列進(jìn)行比較。可參照以下根據(jù)貨架位置進(jìn)行分類(lèi)的數(shù)據(jù):
plt.figure(figsize=(15, 8))sns.violinplot(x=df.shelf, y=df.cal_per_cup, color=’#F0BFFF’)plt.xticks([0,1,2], [‘Bottom Shelf’, ‘Middle Shelf’, ‘Top Shelf’])plt.ylabel(‘Calories Per Cup’, fontsize=16)plt.xlabel(‘Cereal Placement’, fontsize=16)plt.title(‘Distribution of Calories in Cereals by Shelf Placement’, fontsize=20)plt.tight_layout()小提琴圖的另一個(gè)重要特點(diǎn)就是,如果你希望用兩種分類(lèi)標(biāo)準(zhǔn)來(lái)展示數(shù)據(jù),可以對(duì)其進(jìn)行拆分,在左邊放一組數(shù)據(jù)集的KDE(平滑后的直方圖),右邊放另一組數(shù)據(jù)集的KDE(這就是為什么Viola和Violet不是同卵雙胞胎——她們有時(shí)看起來(lái)截然不同),中間是合并數(shù)據(jù)集的中間值及其他值。
下圖將General Mills生產(chǎn)的谷物和Kelloggs生產(chǎn)的谷物(這是數(shù)據(jù)集中最大的兩家谷物生產(chǎn)商)進(jìn)行了分類(lèi),并分別展示了每杯谷物中的熱量。
plt.figure(figsize=(15, 8)) plot = sns.violinplot(x=df[(df.mfr == ‘K’) |(df.mfr == ‘G’)].shelf, y=df[(df.mfr == ‘K’) |(df.mfr == ‘G’)].cal_per_cup, hue=df[(df.mfr == ‘K’) |(df.mfr == ‘G’)].mfr, split=True, color=’#F0BFFF’)handles, labels = plot.get_legend_handles_labels()plt.xticks([0,1,2], [‘Bottom Shelf’, ‘Middle Shelf’, ‘Top Shelf’])plt.ylabel(‘Calories Per Cup’, fontsize=16)plt.xlabel(‘Cereal Placement’, fontsize=16)plt.legend([handles[0], handles[1]], [‘Kelloggs’, ‘General Mills’], title=’Manufacturer’)plt.title(‘Distribution of Calories in Cereals nby Shelf Placement and Manufacturer’, fontsize=20)plt.tight_layout();傳送門(mén):https://github.com/msiboni88/DisplayingDistributions/blob/master/Displaying Distributions.ipynb
留言 點(diǎn)贊 關(guān)注
我們一起分享AI學(xué)習(xí)與發(fā)展的干貨
編譯組:莫菲菲、殷睿宣
相關(guān)鏈接:
https://onezero.medium.com/a-proposed-trump-administration-rule-could-let-lenders-discriminate-through-a-i-2f9a729b0f3c
如需轉(zhuǎn)載,請(qǐng)后臺(tái)留言,遵守轉(zhuǎn)載規(guī)范
總結(jié)
以上是生活随笔為你收集整理的密度图的密度估计_箱形图、小提琴图、直方图……统统可以卡通化!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 净资产超过 1030 亿美元,比尔・盖茨
- 下一篇: leetcode c程序总提示主函数_M