亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用python繪制cdf的多種實(shí)現(xiàn)方法

 更新時(shí)間:2020年02月25日 16:28:37   作者:站在風(fēng)口的騷人  
今天小編就為大家分享一篇使用python繪制cdf的多種實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

首先我們先用隨機(jī)函數(shù)編造一個(gè)包含1000個(gè)數(shù)值的一維numpy數(shù)組,如下:

// An highlighted block
rng = np.random.RandomState(seed=12345)
samples = stats.norm.rvs(size=1000, random_state=rng)

接下來我們將使用各種方法畫出以上數(shù)據(jù)的累積分布圖

1、matplotlib.pyplot.hist()

  def hist(self, x, bins=None, range=None, density=None, weights=None,
       cumulative=False, bottom=None, histtype='bar', align='mid',
       orientation='vertical', rwidth=None, log=False,
       color=None, label=None, stacked=False, normed=None,
       **kwargs):

第一種方法,我們使用matplotlib圖形庫中的hist函數(shù),熟悉該庫的人應(yīng)該知道這是一個(gè)直方圖繪制函數(shù),以上是從API中找到的hist函數(shù)的所有參數(shù),我們給出一維數(shù)組或者列表x,使用hist畫出該數(shù)據(jù)的直方圖。

直方圖有兩種形式,分別是概率分布直方圖和累積分布直方圖(可能說的不準(zhǔn)確- -?。?,可以通過參數(shù)cucumulative來調(diào)節(jié),默認(rèn)為False,畫出的是PDF,那么True畫出的便是CDF直方圖。

PDF(figure1)可以觀察到整個(gè)數(shù)據(jù)在橫軸范圍內(nèi)的分布,CDF(figure2)則可以看出不同的數(shù)據(jù)分布間的差異性,也可以觀察到整個(gè)數(shù)據(jù)的增長趨勢(shì)和波動(dòng)情況。

上圖是概率分布直方圖,縱軸代表概率,如果置參數(shù)normed=False,縱軸代表頻數(shù)

如果我們要觀察兩種數(shù)據(jù)分布的差異,可能使用直方圖就不是很直觀,各種直方柱會(huì)相互重疊,我們只需更改直方圖的圖像類型,令histtype=‘step',就會(huì)畫出一條曲線來(Figure3,實(shí)際上就是將直方柱并在一起,除邊界外顏色透明),類似于累積分布曲線。這時(shí),我們就能很好地觀察到不同數(shù)據(jù)分布曲線間的差異。

2、numpy.histogram

def histogram(a, bins=10, range=None, normed=False, weights=None,
     density=None)

第二種方法我們使用numpy中畫直方圖的函數(shù)histogram,該函數(shù)不是一個(gè)直接的繪圖函數(shù)(廢話- -!過渡句,哈哈),給定一組數(shù)據(jù)a,它會(huì)返回兩個(gè)數(shù)組hist和bin_edges,默認(rèn)情況下hist是數(shù)據(jù)在各個(gè)區(qū)間上的頻率,bin_edges是劃分的各個(gè)區(qū)間的邊界,說到這我們大概可以想到其實(shí)該函數(shù)算是上一個(gè)函數(shù)的底層函數(shù),我們可以依據(jù)得到的這兩個(gè)數(shù)組來畫直方圖,我們也可以用頻率數(shù)組來直接畫分布曲線(Figure4)

這里我只給出了一個(gè)最原始的圖像,直接用hist數(shù)組畫的,如果想要變成合格的累積分布曲線圖,縱軸為概率(頻率乘區(qū)間長度),橫軸為區(qū)間(從bin_edges數(shù)組中取n-1個(gè))就可以了

3、stats.relfreq

def relfreq(a, numbins=10, defaultreallimits=None, weights=None)
Returns
-------
frequency : ndarray
  Binned values of relative frequency.
lowerlimit : float
  Lower real limit
binsize : float
  Width of each bin.
extrapoints : int
  Extra points.

第三種方法我們使用stats中的relfreq函數(shù),該函數(shù)和第二種的方法類似,也并非是直接畫圖,而是返回關(guān)于直方圖的一些數(shù)據(jù),這里的frequency直接是概率而非頻率,可以直接作為CDF圖的縱軸,但是橫軸需要自己計(jì)算,計(jì)算公式:

res.lowerlimit + np.linspace(0,res.binsize*res.frequency.size, res.frequency.size)

這個(gè)公式應(yīng)該很好理解,我就不多說了,當(dāng)然這些返回值都要依賴我們所給出的bins的數(shù)目。下面我給出一段代碼,便是使用stats.relfreq畫出概率分布直方圖和累積分布曲線圖。

rng = np.random.RandomState(seed=12345)
samples = stats.norm.rvs(size=1000, random_state=rng)
res = stats.relfreq(samples, numbins=25)
x = res.lowerlimit + np.linspace(0, res.binsize*res.frequency.size,res.frequency.size)
fig = plt.figure(figsize=(5, 4))
ax = fig.add_subplot(1, 1, 1)
ax.bar(x, res.frequency, width=res.binsize)
ax.set_title('Relative frequency histogram')
ax.set_xlim([x.min(), x.max()])
plt.show()

rng = np.random.RandomState(seed=12345)
samples = stats.norm.rvs(size=1000, random_state=rng)
res = stats.relfreq(samples, numbins=25)
x = res.lowerlimit + np.linspace(0, res.binsize*res.frequency.size,res.frequency.size)
y=np.cumsum(res.frequency)
plt.plot(x,y)
plt.title('Figure6 累積分布直方圖')
plt.show()

以上就是本人整理出來的關(guān)于畫cdf直方圖和曲線的三種方法,整理這方面東西的初忠是在發(fā)現(xiàn)在進(jìn)行數(shù)據(jù)分析的時(shí)候,概率分布直方圖只能觀察到數(shù)據(jù)大概的分布情況,而在不同的數(shù)據(jù)樣本進(jìn)行比較時(shí)卻很難直觀滴反映其差異性,通過看論文發(fā)現(xiàn)cdf可以做到這一點(diǎn)。

本人并不是數(shù)學(xué)專業(yè)出身,想要表達(dá)其意義,但有些描述和用詞不當(dāng),大家借鑒就好。希望大家多多支持腳本之家!

相關(guān)文章

  • Python MySQLdb Linux下安裝筆記

    Python MySQLdb Linux下安裝筆記

    這篇文章主要介紹了Python MySQLdb Linux下安裝筆記,本文分別講解了快速安裝和手動(dòng)編譯安裝兩種方法,并分別講解了操作步驟,需要的朋友可以參考下
    2015-05-05
  • python 獲取本機(jī)ip地址的兩個(gè)方法

    python 獲取本機(jī)ip地址的兩個(gè)方法

    用python 獲取本機(jī)ip地址的多種方法,需要的朋友可以參考下
    2013-02-02
  • Python實(shí)現(xiàn)設(shè)置顯示屏分辨率

    Python實(shí)現(xiàn)設(shè)置顯示屏分辨率

    這篇文章主要為大家詳細(xì)介紹了Python如何調(diào)用win32庫實(shí)現(xiàn)分辨率獲取和讀寫,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考下
    2023-01-01
  • python thread 并發(fā)且順序運(yùn)行示例

    python thread 并發(fā)且順序運(yùn)行示例

    以上源文件是對(duì)python中的線程的一個(gè)簡單應(yīng)用,實(shí)現(xiàn)了對(duì)并發(fā)線程的順序運(yùn)行,也許對(duì)你會(huì)有小小幫助
    2009-04-04
  • Python中的變量、運(yùn)算符與流程控制

    Python中的變量、運(yùn)算符與流程控制

    本文詳細(xì)講解了Python中的變量、運(yùn)算符與流程控制,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • Python subprocess庫六個(gè)實(shí)例快速掌握

    Python subprocess庫六個(gè)實(shí)例快速掌握

    這次來說Python的第三方庫subprocess庫,在python2.4以上的版本commands模塊被subprocess取代了。一般當(dāng)我們?cè)谟肞ython寫運(yùn)維腳本時(shí),需要履行一些Linux shell的命令,Python中subprocess模塊就是專門用于調(diào)用Linux shell命令,并返回狀態(tài)和結(jié)果,可以完美的解決這個(gè)問題
    2022-10-10
  • python裝飾器property和setter用法

    python裝飾器property和setter用法

    這篇文章主要介紹了python裝飾器property和setter用法,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • 對(duì)python中assert、isinstance的用法詳解

    對(duì)python中assert、isinstance的用法詳解

    今天小編就為的就分享一篇對(duì)python中assert、isinstance的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • python數(shù)據(jù)結(jié)構(gòu)之二叉樹的建立實(shí)例

    python數(shù)據(jù)結(jié)構(gòu)之二叉樹的建立實(shí)例

    這篇文章主要介紹了python數(shù)據(jù)結(jié)構(gòu)之二叉樹的建立實(shí)例,采用了類似遞歸方式建立,需要的朋友可以參考下
    2014-04-04
  • python元組和字典的內(nèi)建函數(shù)實(shí)例詳解

    python元組和字典的內(nèi)建函數(shù)實(shí)例詳解

    這篇文章主要介紹了python元組和字典的內(nèi)建函數(shù),結(jié)合實(shí)例形式詳細(xì)分析了Python元組和字典的各種常見內(nèi)建函數(shù)功能與相關(guān)使用技巧,需要的朋友可以參考下
    2019-10-10

最新評(píng)論