寫個畫圖裝飾器,通過繪圖加深對常見概率分布的理解

2021-03-02 大鄧和他的Python

1 導入包

導入本次實驗所用的4種常見分布,連續分布的代表:beta分布、正態分布,均勻分布,離散分布的代表:二項分布。

import numpy as np
from scipy.stats import beta, norm, uniform, binom
import matplotlib.pyplot as plt
from functools import wraps

2 定義帶參數的裝飾器

繪圖裝飾器帶有四個參數分別表示legend的2類說明文字,y軸label, 保存的png文件名稱。

# 定義帶四個參數的畫圖裝飾器
def my_plot(label0=None, label1=None, ylabel='probability density function', fn=None):
def decorate(f):
@wraps(f)
def myplot():
fig = plt.figure(figsize=(16, 9))
ax = fig.add_subplot(111)
x, y, y1 = f()
ax.plot(x, y, linewidth=2, c='r', label=label0)
ax.plot(x, y1, linewidth=2, c='b', label=label1)
ax.legend()
plt.ylabel(ylabel)
# plt.show()
plt.savefig('./img/%s' % (fn,))
plt.close()
return myplot
return decorate

3 均勻分布

從圖中可看出,紅色概率密度函數只在0~1才會發生,曲線與x軸的0~1區間所封閉的面積為全概率1.0.

# 均勻分布(uniform)
@my_plot(label0='b-a=1.0', label1='b-a=2.0', fn='uniform.png')
def unif():
x = np.arange(-0.01, 2.01, 0.01)
y = uniform.pdf(x, loc=0.0, scale=1.0)
y1 = uniform.pdf(x, loc=0.0, scale=2.0)
return x, y, y1

4 二項分布

紅色曲線表示發生一次概率為0.3,重複50次的密度函數,二項分布期望值為0.3*50 = 15次。看到這50次實驗,很可能出現的次數為10~20.可與藍色曲線對比分析。

@my_plot(label0='n=50,p=0.3', label1='n=50,p=0.7', fn='binom.png', ylabel='probability mass function')
def bino():
x = np.arange(50)
n, p, p1 = 50, 0.3, 0.7
y = binom.pmf(x, n=n, p=p)
y1 = binom.pmf(x, n=n, p=p1)
return x, y, y1

5 高斯分布

紅色曲線表示均值為0,標準差為1.0的概率密度函數,藍色曲線的標準差更大,所以它更矮胖,顯示出取值的多樣性,和不穩定性。

# 高斯 分布
@my_plot(label0='u=0.,sigma=1.0', label1='u=0.,sigma=2.0', fn='guass.png')
def guass():
x = np.arange(-5, 5, 0.1)
y = norm.pdf(x, loc=0.0, scale=1.0)
y1 = norm.pdf(x, loc=0., scale=2.0)
return x, y, y1

6 beta分布

beta分布的期望值如下,可從下面的兩條曲線中加以驗證:

@my_plot(label0='a=10., b=30.', label1='a=4., b=4.', fn='beta.png')
def bet():
x = np.arange(-0.1, 1, 0.001)
y = beta.pdf(x, a=10., b=30.)
y1 = beta.pdf(x, a=4., b=4.)
return x, y, y1

7 總結

統一調用以上四個函數,分別繪製概率曲線:

distrs = [unif, bino, guass, bet]
for distri in distrs:
distri()

相關焦點

  • 通俗理解:概率分布函數、概率密度函數
    接下來講概率分布,顧名思義就是概率的分布,這個概率分布還是講概率的。我認為在理解這個概念時,關鍵不在於「概率」兩個字,而在於「分布」這兩個字。為了理解「分布」這個詞,我們來看一張圖。在很多教材中,這樣的列表都被叫做離散型隨機變量的「概率分布」。其實嚴格來說,它應該叫「離散型隨機變量的值分布和值的概率分布列表」,這個名字雖然比「概率分布」長了點,但是肯定好理解了很多。
  • 算法工匠MATLAB專訓營:Matlab繪圖,小試牛刀
    通過圖形的線型、色彩、視角等屬性的控制,可把數據的內在特徵表現出來。所以自然成為很多學科畫圖的首選工具。下面我們一起來學習Matlab繪圖的基本知識和相關命令。這麼多用處,大家一定要學好哦!MATLAB擁有強大的繪圖功能,軟體提供了一系列的繪圖函數,用戶不需要過多的考慮繪圖的細節,只需要給出一些基本參數就能畫出所需圖形。這類畫圖函數稱為高層繪圖函數。而且MATLAB還提供了直接對圖形句柄進行操作的低層繪圖操作,這樣就可以直接對畫好的圖形直接操作。
  • 概率與概率分布
    常見的兩種數據類別型數據:取值優先,如:性別,男、女。共有4種可能:無人付費12.5%1人付費37.5%2人付費37.5%3人付費12.5%此類問題被稱為二項式概率分布,對於很大量的事件,最終產生某個特定時間的概率是多少
  • 迅捷畫圖流程圖繪製軟體容易繪圖嗎?
    很多新手在學習流程圖製作的時候覺得好難,製作一個簡單的流程圖都需要花幾個小時時間,領導讓你製作一個流程圖,半天的工作都浪費在製圖上。而且對於很多新手來說覺得製作流程很難,其實大家是沒有找對軟體,我們就來看看迅捷畫圖流程圖繪製軟體容易繪圖嗎?如何快速製作流程圖。
  • 常見概率分布
    離散分布退化分布 若r.v. n,其概率分布為超幾何分布.幾何分布 在事件A發生的概率為p的伯努利試驗中,若以η記A首次出現時的試驗次數,則η為隨機變量,它可能取的值為1,2,3,…其概率分布為幾何分布:
  • R繪圖 | 兩組genes的累積曲線分布比較!
    to healthy control keratinocytes for IFN-inducible genes (n = 212) and ubiquitous genes (n = 262) compared using the Mann-Whitney U test.
  • 算法工匠線上訓練營:MATLAB繪圖小試牛刀(20時直播)
    通過圖形的線型、色彩、視角等屬性的控制,可把數據的內在特徵表現出來。所以自然成為很多學科畫圖的首選工具。下面我們一起來學習Matlab繪圖的基本知識和相關命令。MATLAB擁有強大的繪圖功能,軟體提供了一系列的繪圖函數,用戶不需要過多的考慮繪圖的細節,只需要給出一些基本參數就能畫出所需圖形。這類畫圖函數稱為高層繪圖函數。
  • 詳解Python的裝飾器
    format(something)至此,你已完全掌握初級的裝飾器寫法。高級一點的裝飾器帶參數的裝飾器和類裝飾器屬於進階的內容。在理解這些裝飾器之前,最好對函數的閉包和裝飾器的接口約定有一定了解。format(something)帶參數的類裝飾器如果需要通過類形式實現帶參數的裝飾器,那麼會比前面的例子稍微複雜一點。那麼在構造函數裡接受的就不是一個函數,而是傳入的參數。通過類把這些參數保存起來。然後在重載__call__方法是就需要接受一個函數並返回一個函數。
  • Python 裝飾器填坑指南 | 最常見的報錯信息、原因和解決方案
    裝飾器學習資料,推薦參考 RealPythonhttps://realpython.com/primer-on-python-decorators/本文主要匯總記錄 Python 裝飾器的常見踩坑經驗,列舉報錯信息、原因和解決方案,供大家參考。
  • R語言 ggplot2 繪圖入門,看完你就理解ggplot2的繪圖邏輯了
    R語言最擅長繪圖。R語言最擅長的繪圖包是ggplot2,由於很多朋友沒有接觸過ggplot2,必須要對其語言方式有個初步的認識。
  • 手把手教你用R語言做科研繪圖拼接!!!!!
    而ggplot2是R中最強大的繪圖包,也是我最常用的,所以,我決定向大家推薦這二者!首先要注意一下,cowplot包是可以直接install的,但是patchwork是要在github中加載的。如圖所示。把這兩個包安裝完之後,就可以進行拼接了。由於本推送的重點在「拼接」,而非「畫圖」,所以不會具體解釋畫圖步驟,並且使用的也都是ggplot2中最常見的畫圖語法。
  • 必考知識點,CFA一級數量分析-常見概率分布-上
    在了解了概率的相關概念之後,我們這篇文章,將會來說說那些非常重要或者常見(很大程度上,因為常見所以重要)的概率分布,他們實際上代表了很多前輩為我們總結的客觀規律。有了前輩們的總結,我們想要造車,就不用去做炫酷的PPT了,哦不,是就不需要去重新造輪子了。那下面,我們就直接去把前輩們的輪子搬回自己家吧。
  • 必考知識點,CFA一級數量分析-常見概率分布-下
    可以說,在常見概率分布這一大章內容裡面,最重要的內容就在接下來要說的裡面,一個是正態分布(normal distribution),另一個是t分布(student『s t-distribution),其也是掌握後面章節內容的關鍵知識點。
  • 視點|數字繪圖強勢來襲,手繪畫圖時代要終結?
    去一年,數字繪圖強勢來襲,很多珠寶人都跟風去學了「iPad數字繪圖」,傳統手繪在珠寶設計中要成為過去式了嗎?傳統手繪與數字繪畫幾百年來,繪圖與工藝一直是珠寶領域必不可少的兩項基礎技能。在iPad出現之前,市面上已經廣泛使用數位板繪圖來提高工作效率。數位板就像繪畫者的畫板和畫筆,通過模擬現實中畫筆的效果來達到手繪效果一樣的表現。例如模擬最常見的毛筆,與現實一樣,當我們用力的時候毛筆能畫很粗的線條,當我們用力很輕的時候,它可以畫出很細很淡的線條......除此基本操作,數位板還可模擬出不同種類的繪畫,例如:油畫、水彩畫、素描等等。iPad的出現,實際就是簡化便攜版的「數位板」 。
  • 從貝葉斯定理到概率分布:綜述概率論基本定義
    重溫基礎知識總是有益的,這樣我們就能發現以前並未理解的新知識,所以我們開始吧。第一部分將會介紹概率論基礎知識。概率我們已經擁有十分強大的數學工具了,為什麼我們還需要學習概率論?我們用微積分來處理變化無限小的函數,並計算它們的變化。我們使用代數來解方程,我們還有其他幾十個數學領域來幫助我們解決幾乎任何一種可以想到的難題。
  • 掌握畫圖技能,輕鬆學好初中生物!
    今天,周老師就先推薦一種初中生物學習的必備技能——畫圖!生物科學研究的早期屬於描述性階段。生物學家通過文字繪圖和文字描述的方法對觀察到的生物整體或局部的外觀以及解剖特徵進行詳細記錄。早期的生物學家都堪稱是寫實派畫家!所繪製的生物示意圖可謂惟妙惟肖,非常精準。由於有了這些記錄,極大地促進了早期生物學(涵蓋在當時的博物學、畜牧學和醫學等學科當中,沒有獨立出來。)
  • 貝葉斯、概率分布與機器學習
    簡單的說貝葉斯定理:貝葉斯定理用數學的方法來解釋生活中大家都知道的常識形式最簡單的定理往往是最好的定理,比如說中心極限定理,這樣的定理往往會成為某一個領域的理論基礎。機器學習的各種算法中使用的方法,最常見的就是貝葉斯定理。
  • 統計學入門級:常見概率分布+python繪製分布圖
    舉個慄子:拋3次均勻的硬幣,求結果出現有2個正面的概率。已知p = 0.5 (出現正面的概率) ,n = 3 ,k = 2 所以拋3次均勻的硬幣,求結果出現有2個正面的概率為3/8。在連續分布的情況下,隨機變量X在a與b之間的概率可以寫成:正態分布 Normal Distribution正態分布(或高斯分布)是連續型隨機變量的最重要也是最常見的分布,比如學生的考試成績就呈現出正態分布的特徵,大部分成績集中在某個範圍(比如60-80分),很小一部分往兩端傾斜
  • 畫圖軟體
    畫圖軟體是一款專業的具有繪圖、插畫、漫畫、素描、塗鴉等功能的繪畫軟體.本畫圖軟體能為繪畫初學者和專業人士帶來便捷的移動端繪畫體驗.本應用界面簡潔大方,各種繪圖工具方便查找,本應用提供了筆刷、調色板、橡皮擦、形狀、裁剪
  • 算法工程師的數學基礎|如何理解概率分布函數和概率密度函數
    離散型隨機變量的概率分布、概率函數和概率分布函數在理解概率分布函數和概率密度函數之前,先來理解下概率分布和概率函數。陳希孺老師在他所著的《概率論與數理統計》這本書中說:研究一個隨機變量,不只是要看它能取哪些值,更重要的是它取各種值的概率如何!