日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

密度图的密度估计_箱形图、小提琴图、直方图……统统可以卡通化!

發(fā)布時(shí)間:2023/12/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 密度图的密度估计_箱形图、小提琴图、直方图……统统可以卡通化! 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

全文共11345字,預(yù)計(jì)學(xué)習(xí)時(shí)長(zhǎng)23分鐘或更長(zhǎng)

對(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。