NumPy 二項分佈生成與 Seaborn 可視化技巧

来源:https://www.cnblogs.com/xiaowange/p/18216487
-Advertisement-
Play Games

二項分佈是描述固定次數獨立試驗中成功次數的概率分佈,常用於分析二元結果的事件,如拋硬幣。分佈由參數 n(試驗次數)、p(單次成功概率)和 k(成功次數)定義。概率質量函數 P(k) = C(n, k) * p^k * (1 - p)^(n - k)。NumPy 的 `random.binomial(... ...


二項分佈

簡介

二項分佈是一種離散概率分佈,用於描述在固定次數的獨立試驗中,事件“成功”的次數的概率分佈。它通常用於分析諸如拋硬幣、做選擇題等具有兩個結果(成功或失敗)的事件。

參數

二項分佈用三個參數來定義:

n:試驗次數,表示重覆相同實驗的次數。
p:每次試驗中成功事件發生的概率。
k:成功事件發生的次數,範圍為 0 到 n。

公式

二項分佈的概率質量函數 (PMF) 給出了在 n 次試驗中恰好獲得 k 次成功的概率,計算公式為:

P(k) = C(n, k) p^k (1 - p)^(n - k)

其中:

C(n, k) 是組合數,表示從 n 個元素中選取 k 個元素的方案數。
p^k 表示 k 次成功的概率。
(1 - p)^(n - k) 表示 n - k 次失敗的概率。

生成二項分佈數據

NumPy 提供了 random.binomial() 函數來生成服從二項分佈的隨機數。該函數接受以下參數:

n:試驗次數。
p:每次試驗中成功事件發生的概率。
size:輸出數組的形狀。

示例:生成 10 次試驗中,每次成功概率為 0.5 的事件的成功次數:

import numpy as np

data = np.random.binomial(n=10, p=0.5, size=10)
print(data)

可視化二項分佈

Seaborn 庫提供了便捷的函數來可視化分佈,包括二項分佈。

示例:繪製 100 次試驗中,每次成功概率為 0.6 的事件的成功次數分佈:

import seaborn as sns
import numpy as np

data = np.random.binomial(n=100, p=0.6, size=1000)
sns.distplot(data)
plt.show()

正態分佈與二項分佈的關係

當試驗次數 n 很大,成功概率 p 接近 0.5 時,二項分佈可以近似為正態分佈。其均值 μ 為 np,標準差 σ 為 sqrt(np(1 - p))。

示例:比較二項分佈和正態分佈的形狀:

import seaborn as sns
import numpy as np

n = 100
p = 0.5

# 生成二項分佈數據
data_binomial = np.random.binomial(n=n, p=p, size=1000)

# 生成正態分佈數據
mu = n p
sigma = np.sqrt(n p (1 - p))
data_normal = np.random.normal(loc=mu, scale=sigma, size=1000)

sns.distplot(data_binomial, label="Binomial")
sns.distplot(data_normal, label="Normal")
plt.legend()
plt.show()

練習

  1. 在 50 次試驗中,每次成功概率為 0.2 的事件,模擬成功次數並繪製分佈圖。
  2. 比較不同試驗次數下二項分佈形狀的變化。
  3. 利用二項分佈來模擬一次 10 道選擇題的考試,每題答對的概率為 0.7,並計算平均分和及格率(60 分及格)。

解決方案

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

# 1. 模擬成功次數並繪製分佈圖
data = np.random.binomial(n=50, p=0.2, size=1000)
sns.distplot(data)
plt.show()

# 2. 比較不同試驗次數下二項分佈形狀的變化
n_values = [10, 50, 100, 500]
for n in n_values:
    data = np.random.binomial(n=n, p=0.5, size=1000)
    sns.distplot(data, label=f"n={n}")
plt.legend()
plt.show()

# 3. 模擬考試成績並計算平均分和及格率
scores

最後

為了方便其他設備和平臺的小伙伴觀看往期文章:

微信公眾號搜索:Let us Coding,關註後即可獲取最新文章推送

看完如果覺得有幫助,歡迎點贊、收藏、關註


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

-Advertisement-
Play Games
更多相關文章
  • 大家看過黑客帝國的代碼雨嗎?本人自己寫了一個,效果還可以。演示效果請見https://www.lanbaoshi.site/coderain.htm 下麵上代碼: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http ...
  • title: Vue.js條件渲染與列表渲染指南 date: 2024/5/26 20:11:49 updated: 2024/5/26 20:11:49 categories: 前端開發 tags: VueJS 前端開發 數據綁定 列表渲染 狀態管理 路由配置 性能優化 第1章:Vue.js基礎與 ...
  • 從Vue開始較大範圍在前端應用開始,關於Vue一些基礎知識的討論和麵試問題就在開發圈子裡基本上就跟前幾年的股票和基金一樣,樓下擺攤賣醬香餅的阿姨都能說上幾句那種。找過前端開發工作或者正在找開發工作的前端都知道,面試官基本上都有那麼幾個常問的問題,而網上呢也有那麼一套可以用來背誦的“八股文”,自己懂多 ...
  • title: Vue 3指令與事件處理 date: 2024/5/25 18:53:37 updated: 2024/5/25 18:53:37 categories: 前端開發 tags: Vue3基礎 指令詳解 事件處理 高級事件 實戰案例 最佳實踐 性能優化 第1章 Vue 3基礎 1.1 V ...
  • Symbol 引用 iconfont icon圖標庫 Symbol 引用 這是一種全新的使用方式,應該說這才是未來的主流,也是平臺目前推薦的用法。相關介紹可以參考這篇文章 這種用法其實是做了一個 SVG 的集合,與另外兩種相比具有如下特點: 支持多色圖標了,不再受單色限制。 通過一些技巧,支持像字體 ...
  • 設計原則名稱 定義 使用頻率 單一職責原則 一個類只負責一個功能領域中的相應職責 四顆星 開閉原則 軟體實體應對擴展開發,而對修改關閉 五顆星 里氏代換原則 所有引用基類對象的地方能夠透明地使用其子類的對象 五顆星 依賴倒轉原則 抽象不應該依賴於細節,細節應該依賴於抽象 五顆星 介面隔離原則 使用多 ...
  • 中國程式員的特點 中國程式員的最大優點是非常勤奮。中國互聯網行業有句話叫:“they earn a lot of money but die early”(賺得多死得早)。由於工作強度大,經常有程式員突然去世的新聞報道。 996 工作制度:中國程式員通常實行“996”工作制度(即每天工作從早9點到晚 ...
  • 前言 大家好,我是老馬。很高興遇到你。 我們為 java 開發者實現了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何處理的,可以參考我的另一個項目: 手寫從零實現簡易版 tomcat minicat 手寫 ngin ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...