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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...