首頁人工智能技術(shù)資訊正文

Seaborn庫繪制單變量分布和雙變量分布

更新時(shí)間:2022-09-07 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

Matplotlib雖然已經(jīng)是比較優(yōu)秀的繪圖庫了,但是它有個(gè)今人頭疼的問題,那就是API使用過于復(fù)雜,它里面有上千個(gè)函數(shù)和參數(shù),屬于典型的那種可以用它做任何事,卻無從下手。

Seaborn基于 Matplotlib核心庫進(jìn)行了更高級(jí)的API封裝,可以輕松地畫出更漂亮的圖形,而Seaborn的漂亮主要體現(xiàn)在配色更加舒服,以及圖形元素的樣式更加細(xì)膩。

不過,使用Seaborn繪制圖表之前,需要安裝和導(dǎo)入繪圖的接口,具體代碼如下:

#安裝 
pip3installseaborn
#導(dǎo)入 
importseabornassns

Seaborn庫的可視化數(shù)據(jù)分布

當(dāng)處理一組數(shù)據(jù)時(shí),通常先要做的就是了解變量是如何分布的。

對(duì)于單變量的數(shù)據(jù)來說采用直方圖或核密度曲線是個(gè)不錯(cuò)的選擇,對(duì)于雙變量來說,可采用多面板圖形展現(xiàn),比如散點(diǎn)圖、二維直方圖、核密度估計(jì)圖形等。

針對(duì)這種情況,Seaborn庫提供了對(duì)單變量和雙變量分布的繪制函數(shù),如displot()函數(shù)、jointplot()函數(shù),下面來介紹這些函數(shù)的使用。

繪制單變量分布

可以采用最簡(jiǎn)單的直方圖描述單變量的分布情況。Seaborn中提供了distplot()函數(shù),它默認(rèn)繪制的是一個(gè)帶有核密度估計(jì)曲線的直方圖。distplot()函數(shù)的語法格式如下。

seaborn.distplot(a,bins=None,hist=True,kde=True,rug=False,fit=None,color=None)

上述函數(shù)中常用參數(shù)的含義如下:

(1)a:表示要觀察的數(shù)據(jù),可以是Series、一維數(shù)組或列表。

(2)bins:用于控制條形的數(shù)量。

(3)hist:接收布爾類型,表示是否繪制(標(biāo)注)直方圖。

(4)kde:接收布爾類型,表示是否繪制高斯核密度估計(jì)曲線。

(5)rug:接收布爾類型,表示是否在支持的軸方向上繪制rugplot。

通過distplot())函數(shù)繪制直方圖的示例如下。

importnumpyasnp

sns.set()
np.random.seed(0)#確定隨機(jī)數(shù)生成器的種子,如果不使用每次生成圖形不一樣
arr=np.random.randn(100)#生成隨機(jī)數(shù)組
ax=sns.distplot(arr,bins=10,hist=True,kde=True,rug=True)#繪制直方圖

上述示例中,首先導(dǎo)入了用于生成數(shù)組的numpy庫,然后使用seaborn調(diào)用set()函數(shù)獲取默認(rèn)繪圖,并且調(diào)用random模塊的seed函數(shù)確定隨機(jī)數(shù)生成器的種子,保證每次產(chǎn)生的隨機(jī)數(shù)是一樣的,接著調(diào)用randn()函數(shù)生成包含100個(gè)隨機(jī)數(shù)的數(shù)組,最后調(diào)用distplot()函數(shù)繪制直方圖。

運(yùn)行結(jié)果如下圖所示。
1662531891417_圖片1.png

上圖中看出:

直方圖共有10個(gè)條柱,每個(gè)條柱的顏色為藍(lán)色,并且有核密度估計(jì)曲線。

根據(jù)條柱的高度可知,位于-1-1區(qū)間的隨機(jī)數(shù)值偏多,小于-2的隨機(jī)數(shù)值偏少。

通常,采用直方圖可以比較直觀地展現(xiàn)樣本數(shù)據(jù)的分布情況,不過,直方圖存在一些問題,它會(huì)因?yàn)闂l柱數(shù)量的不同導(dǎo)致直方圖的效果有很大的差異。為了解決這個(gè)問題,可以繪制核密度估計(jì)曲線進(jìn)行展現(xiàn)。

核密度估計(jì)是在概率論中用來估計(jì)未知的密度函數(shù),屬于非參數(shù)檢驗(yàn)方法之一,可以比較直觀地看出數(shù)據(jù)樣本本身的分布特征。

通過distplot()函數(shù)繪制核密度估計(jì)曲線的示例如下。

#創(chuàng)建包含500個(gè)位于[0,100]之間整數(shù)的隨機(jī)數(shù)組
array_random=np.random.randint(0,100,500)
#繪制核密度估計(jì)曲線
sns.distplot(array_random,hist=False,rug=True)

上述示例中,首先通過random.randint()函數(shù)返回一個(gè)最小值不低于0、最大值低于100的500個(gè)隨機(jī)整數(shù)數(shù)組然后調(diào)用displot()函數(shù)繪制核密度估計(jì)曲線。 運(yùn)行結(jié)果如圖所示。

1662531972556_圖片2.png

從上圖中看出,圖表中有一條核密度估計(jì)曲線,并且在x軸的上方生成了觀測(cè)數(shù)值的小細(xì)條。






分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!