首先介紹一下Iris鳶尾花數(shù)據(jù)集,內(nèi)容摘自百度百科:Iris數(shù)據(jù)集是常用的分類實(shí)驗(yàn)數(shù)據(jù)集,由Fisher, 1936收集整理。“Iris也稱鳶尾花卉數(shù)據(jù)集,是一類多重變量分析的數(shù)據(jù)集。數(shù)據(jù)集包含150個(gè)數(shù)據(jù)集,分為3類,每類50個(gè)數(shù)據(jù),每個(gè)數(shù)據(jù)包含4個(gè)屬性。可通過(guò)花萼長(zhǎng)度,花萼寬度,花瓣長(zhǎng)度,花瓣寬度4個(gè)屬性預(yù)測(cè)鳶尾花卉屬于(Setosa,Versicolour,Virginica)三個(gè)種類中的哪一類”。
數(shù)據(jù)字段介紹:
sepal_length:花萼長(zhǎng)度,單位cm
sepal_width:花萼寬度,單位cm
petal_length:花瓣長(zhǎng)度,單位cm
petal_width:花瓣寬度,單位cm
種類:setosa(山鳶尾),versicolor(雜色鳶尾),virginica(弗吉尼亞鳶尾)
在做categorical visualization的時(shí)候,seaborn給出了基礎(chǔ)的stripplot & swarmplot, boxplot & violinplot, barplot & pointplot,以及抽象化的factorplot.下面就用紙鳶花數(shù)據(jù)集做一下講解。
StripplotStripplot的本質(zhì)就是把數(shù)據(jù)集中具有quantitative屬性的變量按照類別去做散點(diǎn)圖(Scatterplot)。
我們將紙鳶花數(shù)據(jù)集中不同種類花的sepal length做stripplot可視化
plt.show()
上邊左側(cè)的圖片便是在默認(rèn)風(fēng)格下用stripplot繪制的散點(diǎn)圖。在很多情況下,stripplot中的點(diǎn)會(huì)重疊,使得我們不容易看出點(diǎn)的分布情況。一個(gè)簡(jiǎn)單的解決辦法就是用在stripplot的基礎(chǔ)上繪制抖動(dòng)圖(jitterplot),僅沿著類別坐標(biāo)軸的方向去隨機(jī)微調(diào)整點(diǎn)的位置,顯示出分布情況。
Swarmplot另一個(gè)解決stripplot中點(diǎn)重疊的辦法就是繪制swarmplot,它的本質(zhì)就是用通過(guò)算法,在類別坐標(biāo)軸的方向上去‘延展’繪制這些原本重合的點(diǎn)。 我們將紙鳶花數(shù)據(jù)集中不同種類花的petal length和petal width做swarmplot可視化。
plt.subplot(1,2,1)sns.swarmplot(x='Species',y='Petal.Length',data=iris)plt.show()
Boxplot箱形圖,主要包含六個(gè)數(shù)據(jù)節(jié)點(diǎn),將一組數(shù)據(jù)從大到小排列,分別計(jì)算出上邊緣,上四分位數(shù)Q3,中位數(shù),下四分位數(shù)Q1,下邊緣,還有異常值。 下面將紙鳶花數(shù)據(jù)集中的四個(gè)變量sepal_length, sepal_width, petal_length和petal_width做箱形圖可視化。
fig = plt.figure(1,figsize=(12,12))plt.show()
Violinplot相當(dāng)于結(jié)合了箱形圖與核密度圖,更好地展現(xiàn)出數(shù)據(jù)的量化形態(tài)。展示如下:
plt.figure(1,figsize=(12,12))for i in range(4):plt.show()
Violinplot用kernel density estimate去更好地描述了quantitative變量的分布。
與此同時(shí),也可以組合swarmplot和boxplot或violinplot去描述quantitative變量。用鳶尾花數(shù)據(jù)集展示如下:
In [8]:plt.figure(1,figsize=(12,12))plt.title(str(var[i])+ ' in Iris species')plt.show()
BarplotBarplot主要是展現(xiàn)在分類中的quantitative變量的平均值情況,并且用了boostrapping算法計(jì)算了估計(jì)值的置信區(qū)間和error bar.用鳶尾花數(shù)據(jù)集展示如下:
Countplot如果想知道在每個(gè)類別下面有多少個(gè)觀察值,用countplot就可以,相當(dāng)于是做一個(gè)observation counts,用鳶尾花數(shù)據(jù)集展示如下:
PointplotPointplot相當(dāng)于是對(duì)barplot做了一個(gè)橫向延伸,一方面,用point estimate和confidence level去展示barplot的內(nèi)容;另一方面,當(dāng)每一個(gè)主類別下面有更細(xì)分的sub-category的時(shí)候,pointplot可以便于觀察不同sub-category在各主類別之間的聯(lián)系。展示如下:
FactorplotFactorplot可以說(shuō)是seaborn做category visualization的精髓,前面講的這些plot都可以說(shuō)是factorplot的具體展示。我們可以用PariGrid去實(shí)現(xiàn)對(duì)多個(gè)類別的數(shù)值特征用同一種plot做可視化。
In [12]:g.map(sns.violinplot,palette='pastel')plt.show()
附上各plot function的API,今后將會(huì)對(duì)API中的參數(shù)結(jié)合tutorial講講,如何做出更好的可視化效果。更新ing
seaborn.stripplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,ata=None, order=None, hue_order=None,bw='scott', cut=2, scale='area', scale_hue=True, gridsize=100, width=0.8, inner='box',split=False, dodge=True, orient=None, linewidth=None, color=None, palette=None,saturation=0.75, ax=None, **kwargs)seaborn.lvplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,orient=None, color=None, palette=None, saturation=0.75, width=0.8, dodge=True,
seaborn是一個(gè)很棒的可視化庫(kù),尤其是當(dāng)數(shù)據(jù)維度很大的時(shí)候,seaborn可以讓我們用最少的代碼去繪制一些描述性統(tǒng)計(jì)的圖,便于找尋各維度變量之間的特征。此篇文檔也是我對(duì)seaborn的學(xué)習(xí)筆記,這次整理的內(nèi)容是關(guān)于category visualization。下次將會(huì)選取其他數(shù)據(jù)集去整理關(guān)于distribution visualization的內(nèi)容。
聯(lián)系客服