Python實現12種概率分佈(附代碼)

来源:https://www.cnblogs.com/123456feng/archive/2022/04/30/16202910.html
-Advertisement-
Play Games

今天給大家帶來的這篇文章是關於機器學習的,機器學習有其獨特的數學基礎,我們用微積分來處理變化無限小的函數,並計算 它們的變化;我們使用線性代數來處理計算過程;我們還用概率論與統計學建模不確定性。 在這其中,概率論有其獨特的地位,模型的預測結果、學習過程、學習目標都可以通過概率的角度來理解。 與此同時 ...


今天給大家帶來的這篇文章是關於機器學習的,機器學習有其獨特的數學基礎,我們用微積分來處理變化無限小的函數,並計算

它們的變化;我們使用線性代數來處理計算過程;我們還用概率論與統計學建模不確定性。

在這其中,概率論有其獨特的地位,模型的預測結果、學習過程、學習目標都可以通過概率的角度來理解。

與此同時,從更細的角度來說,隨機變數的概率分佈也是我們必須理解的內容。在這篇文章中,項目作者介紹了所有你需要瞭解

的統計分佈,他還提供了每一種分佈的實現代碼。

在這裡插入圖片描述

項目地址:https://github.com/graykode/distribution-is-all-you-need

在這裡插入圖片描述

下麵讓我們先看看總體上概率分佈都有什麼吧:

在這裡插入圖片描述

Python學習交流Q群:906715085###
非常有意思的是,上圖每一種分佈都是有聯繫的。比如說伯努利分佈,它重覆幾次就是二項分佈,如果再擴展到多類別,就成為


了多項式分佈。註意,其中共軛(conjugate)表示的是互為共軛的概率分佈;Multi-Class 表示隨機變數多於 2 個;N Times 表示

我們還會考慮先驗分佈 P(X)。

 







在貝葉斯概念理論中,如果後驗分佈 p(θ | x) 與先驗分佈 p(θ) 是相同的概率分佈族,那麼後驗分佈可以稱為共軛分佈,先驗分佈

可以稱為似然函數的共軛先驗。

為了學習概率分佈,項目作者建議我們查看 Bishop 的模式識別與機器學習。當然,你要是準備再過一遍《概率論與數理統計》,

那也是極好的。

概率分佈與特性

1. 均勻分佈(連續型)

均勻分佈是指閉區間 [a, b] 內的隨機變數,且每一個變數出現的概率是相同的。

在這裡插入圖片描述

在這裡插入圖片描述

2. 伯努利分佈(離散型)

伯努利分佈並不考慮先驗概率 P(X),它是單個二值隨機變數的分佈。它由單個參數φ∈ [0, 1] 控制,φ 給出了隨機變數等於 1 的

概率。我們使用二元交叉熵函數實現二元分類,它的形式與對伯努利分佈取負對數是一致的。

在這裡插入圖片描述

3. 二項分佈(離散型)

二項分佈是由伯努利提出的概念,指的是重覆 n 次獨立的伯努利試驗。在每次試驗中只有兩種可能的結果,而且兩種結果發生與

否互相對立。

在這裡插入圖片描述

4.Multi-Bernoulli 分佈(離散型)

Multi-Bernoulli 分佈又稱為範疇分佈(Categorical distribution),它的類別超過 2,交叉熵的形式與該分佈的負對數形式是一致的。

在這裡插入圖片描述

5. 多項式分佈(離散型)

範疇分佈是多項式分佈(Multinomial distribution)的一個特例,它與範疇分佈的關係就像伯努利分佈與二項分佈之間的關係。

在這裡插入圖片描述

6.Beta 分佈(連續型)

貝塔分佈(Beta Distribution) 是一個作為伯努利分佈和二項式分佈的共軛先驗分佈的密度函數,它指一組定義在 (0,1) 區間的連續

概率分佈。均勻分佈是 Beta 分佈的一個特例,即在 alpha=1、 beta=1 的分佈。

在這裡插入圖片描述

7. 狄利克雷分佈(連續型)

狄利克雷分佈(Dirichlet distribution)是一類在實數域以正單純形(standard simplex)為支撐集(support)的高維連續概率分

布,是 Beta 分佈在高維情形的推廣。在貝葉斯推斷中,狄利克雷分佈作為多項式分佈的共軛先驗得到應用,在機器學習中被用於

構建狄利克雷混合模型。

在這裡插入圖片描述

8.Gamma 分佈(連續型)

Gamma 分佈是統計學中的常見連續型分佈,指數分佈、卡方分佈和 Erlang 分佈都是它的特例。如果 Gamma(a,1) / Gamma(a,1)

  • Gamma(b,1),那麼 Gamma 分佈就等價於 Beta(a, b) 分佈。

在這裡插入圖片描述

9. 指數分佈(連續型)

指數分佈可以用來表示獨立隨機事件發生的時間間隔,比如旅客進入機場的時間間隔、打進客服中心電話的時間間隔等等。當

alpha 等於 1 時,指數分佈就是 Gamma 分佈的特例。

在這裡插入圖片描述

10. 高斯分佈(連續型)

高斯分佈或正態分佈是最為重要的分佈之一,它廣泛應用於整個機器學習的模型中。例如,我們的權重用高斯分佈初始化、我們

的隱藏向量用高斯分佈進行歸一化等等。

在這裡插入圖片描述

當正態分佈的均值為 0、方差為 1 的時候,它就是標準正態分佈,這也是我們最常用的分佈。

11. 卡方分佈(連續型)

簡單而言,卡方分佈(Chi-squared)可以理解為,k 個獨立的標準正態分佈變數的平方和服從自由度為 k 的卡方分佈。卡方分佈

是一種特殊的伽瑪分佈,是統計推斷中應用最為廣泛的概率分佈之一,例如假設檢驗和置信區間的計算。

在這裡插入圖片描述

在這裡插入圖片描述

12. 學生 t-分佈

學生 t-分佈(Student t-distribution)用於根據小樣本來估計呈正態分佈且變異數未知的總體,其平均值是多少。t 分佈也是對稱的

倒鐘型分佈,就如同正態分佈一樣,但它的長尾占比更多,這意味著 t 分佈更容易產生遠離均值的樣本。

在這裡插入圖片描述

分佈的代碼實現

上面多種分佈的 NumPy 構建方式以及製圖方式都提供了對應的代碼,讀者可在原項目中查閱。如下所示展示了指數分佈的構建

的製圖方式,我們可以直接定義概率密度函數,再列印出來就好了。

import numpy as np
from matplotlib import pyplot as plt

def exponential(x, lamb):
    y = lamb * np.exp(-lamb * x)
    return x, y, np.mean(y), np.std(y)

for lamb in [0.5, 1, 1.5]:

    x = np.arange(0, 20, 0.01, dtype=np.float)
    x, y, u, s = exponential(x, lamb=lamb)
    plt.plot(x, y, label=r'$mu=%.2f, sigma=%.2f,'
                         r' lambda=%d$' % (u, s, lamb))
plt.legend()
plt.savefig('graph/exponential.png')
plt.show()

 

最後

今天給大家分享的Python小技巧到這裡就結束了,對於文章有不懂的地方可以評論留言告訴我,喜歡的記得點贊收藏喲!!!

在這裡插入圖片描述


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 很多 C++ 方面的書籍都說明瞭虛析構的作用: 保證派生類的析構函數被調用,並且使析構順序與構造函數相反 保證資源能夠被正確釋放 很久一段時間以來,我一直認為第 2 點僅僅指的是:當派生類使用 RAII 手法時,如果派生類的析構沒有被調用,就會產生資源泄露。就像下麵的代碼: #include <io ...
  • 在一些web開發或者是數據存儲的時候,肯定會使用到資料庫來進行數據存儲。而在Java裡面需要調用JDBC來對資料庫進行操作。每次用jdbc很麻煩,就可以採用一些連接池來解決這個問題 ...
  • 數字輸入、輸出、排序輸出和去重 這是我最近做的交互作業。它和我之前學C語言時寫的程式相比多了對用戶提示的語句,對用戶使用程式更友好。 我參考了一些代碼的思路並按照自己的需求進行了修改,其間調試程式、寫函數花了不少時間(有點生疏了,在寫參數那經常會忘記定義參數類型…)最終成功做出來了,蠻有成就感的! ...
  • python 學習筆記 變數、運算符與數據類型 點擊標題進行跳轉 容器序列類型 列表 列表是有序集合,無定長,能存儲任意數量和類型的數據,語法為:[元素1, 元素2, ..., 元素n] 創建列表 使用range()創建 使用推導式創建 由於列表中的元素可以任何對象,因此列表中保存的是對象的指針,使 ...
  • 建設目標 平臺介面建設規範旨在為介面開發、測試、使用劃定一個框架邊界,明確技術目標與要求,並要求提供完備的介面文檔說明,為自有平臺與第三方平臺提供數據及服務支持。 建設標準 介面規範 命名規範 在標準的RESTful架構中,每個網址代表一種資源(resource),所以網址中不能有動詞,只能有名詞。 ...
  • 對於從事數據科學和人工智慧領域的人們來說,Python 是大家的首選編程語言。根據最近的一項調查,27% 的程式員開發職位要 求掌握 Python 語言,今年年初這一數字還只是 18.5%。 Python 流行的原因在於其擁有非常直觀的能力:這門語言擁有大量的庫、足夠高的生產效率,還相對易於學習。2 ...
  • 參考資料 The WebSocket Protocol(RFC 6455) Spring Boot 2.6.6 官方文檔 SockJS 什麼是 WebSocket ? WebSocket協議提供了一種標準化的方法,通過單個TCP連接在客戶機和伺服器之間建立全雙工、雙向的通信通道。它是一種不同於HTT ...
  • 前言 數美滑塊的加密及軌跡等應該是入門級別的吧,用他們的教程和話來說 就一個des 然後識別缺口位置可以用cv2或者ddddoc 軌跡 也可以隨便模擬一個,這些簡單的教程 在csdn已經有一大把可以搜到的,但是卻很少人告訴你,它的js好像是一周更新一次,更 新之後post的參數key和des的key ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...