常见概率分布的Matplotlib实现
1 導入包
導入本次實驗所用的4種常見分布,連續(xù)分布的代表:beta分布、正態(tài)分布,均勻分布,離散分布的代表:二項分布。
import numpy as np from scipy.stats import beta, norm, uniform, binom import matplotlib.pyplot as plt from functools import wraps2 定義帶參數(shù)的裝飾器
繪圖裝飾器帶有四個參數(shù)分別表示legend的2類說明文字,y軸label, 保存的png文件名稱。
# 定義帶四個參數(shù)的畫圖裝飾器 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 myplotreturn decorate3 均勻分布
從圖中可看出,紅色概率密度函數(shù)只在0~1才會發(fā)生,曲線與x軸的0~1區(qū)間所封閉的面積為全概率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, y14 二項分布
紅色曲線表示發(fā)生一次概率為0.3,重復50次的密度函數(shù),二項分布期望值為0.3*50 = 15次。看到這50次實驗,很可能出現(xiàn)的次數(shù)為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.7y = binom.pmf(x, n=n, p=p)y1 = binom.pmf(x, n=n, p=p1)return x, y, y15 高斯分布
紅色曲線表示均值為0,標準差為1.0的概率密度函數(shù),藍色曲線的標準差更大,所以它更矮胖,顯示出取值的多樣性,和不穩(wěn)定性。
# 高斯 分布 @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, y16 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 總結(jié)
統(tǒng)一調(diào)用以上四個函數(shù),分別繪制概率曲線:
distrs = [unif, bino, guass, bet] for distri in distrs:distri()本文代碼可以在github下載:
https://github.com/fengdu78/Data-Science-Notes/tree/master/5.data-visualization/1.matplotlib/plot_distribution
備注:公眾號菜單包含了整理了一本AI小抄,非常適合在通勤路上用學習。
往期精彩回顧2019年公眾號文章精選適合初學者入門人工智能的路線及資料下載機器學習在線手冊深度學習在線手冊AI基礎下載(第一部分)備注:加入本站微信群或者qq群,請回復“加群”加入知識星球(4500+用戶,ID:92416895),請回復“知識星球”喜歡文章,點個在看
總結(jié)
以上是生活随笔為你收集整理的常见概率分布的Matplotlib实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原文翻译:关于机器学习,我们忽视的东西
- 下一篇: Python地图可视化三大秘密武器