فهرست سرفصل‌های NumPy
خانه (HOME) مقدمه (Intro) شروع کار (Getting Started) ساخت آرایه ها (Creating Arrays) ایندکس گذاری آرایه (Array Indexing) برش آرایه (Array Slicing) انواع داده (Data Types) کپی در برابر View (Copy vs View) شکل آرایه (Array Shape) تغییر شکل آرایه (Array Reshape) حلقه روی آرایه (Array Iterating) ترکیب آرایه ها (Array Join) تقسیم آرایه ها (Array Split) جستجو در آرایه (Array Search) مرتب سازی آرایه (Array Sort) فیلتر کردن آرایه (Array Filter) مقدمه تصادفی سازی (Random Intro) توزیع داده (Data Distribution) جابه جایی تصادفی (Random Permutation) ماژول Seaborn (Seaborn Module) توزیع نرمال (Normal Distribution) توزیع دوجمله ای (Binomial Distribution) توزیع پواسون (Poisson Distribution) توزیع یکنواخت (Uniform Distribution) توزیع لجستیک (Logistic Distribution) توزیع چندجمله ای (Multinomial Distribution) توزیع نمایی (Exponential Distribution) توزیع کای دو (Chi Square Distribution) توزیع ریلی (Rayleigh Distribution) توزیع پارتو (Pareto Distribution) توزیع زیف (Zipf Distribution) مقدمه ufunc (ufunc Intro) ساخت تابع ufunc (ufunc Create Function) حساب ساده با ufunc (ufunc Simple Arithmetic) گرد کردن اعشار با ufunc (ufunc Rounding Decimals) لگاریتم ها با ufunc (ufunc Logs) جمع ها با ufunc (ufunc Summations) حاصل ضرب ها با ufunc (ufunc Products) تفاضل ها با ufunc (ufunc Differences) کمترین مضرب مشترک با ufunc (ufunc Finding LCM) بزرگترین مقسوم علیه مشترک با ufunc (ufunc Finding GCD) توابع مثلثاتی با ufunc (ufunc Trigonometric) توابع هذلولوی با ufunc (ufunc Hyperbolic) عملیات مجموعه ای با ufunc (ufunc Set Operations) ویرایشگر (Editor) آزمون (Quiz) تمارین (Exercises) سرفصل دوره (Syllabus) برنامه مطالعه (Study Plan) گواهینامه (Certificate)
نتیجه‌ای برای جستجو یافت نشد.
NumPy

NumPy — توزیع پواسون (Poisson Distribution)

آخرین بروزرسانی: 1404/08/25

توزیع پواسون (Poisson Distribution)

در این صفحه با توزیع پواسون در پایتون آشنا می شویم. این توزیع برای شمردن تعداد رخدادها در یک بازه زمان یا فضا استفاده می شود.

آشنایی با توزیع پواسون در پایتون

توزیع پواسون یک توزیع گسسته (Discrete Distribution) است. یعنی فقط روی عددهای صحیح تعریف می شود.

این توزیع حدس می زند یک رویداد چند بار رخ می دهد. مثلا اگر کسی معمولا روزی دو بار غذا بخورد، احتمال سه بار غذا خوردن او چقدر است.

نکته: گسسته یعنی بین دو مقدار، مقدارهای میانی در نظر گرفته نمی شوند. مثلا 2 و 3 بار رخداد داریم، اما 2٫5 بار رخداد معنی ندارد.

پارامترهای توزیع پواسون در NumPy

در نامپای، تابع random.poisson() توزیع پواسون در پایتون را می سازد. این تابع دو پارامتر مهم دارد.

  • lam: نرخ رخدادها در بازه مشخص است. مثلا اگر به طور میانگین در یک ساعت دو پیام می گیری، lam برابر 2 است.
  • size: شکل آرایه خروجی را مشخص می کند. یعنی چند نمونه از توزیع می خواهی.

می توانی lam را مثل میانگین تعداد رخداد در یک بازه ببینی. سپس با size تعیین می کنی چند بار این وضعیت را شبیه سازی کنی.

ساخت داده پواسون با NumPy

در مثال منبع، یک آرایه یک بعدی با ده مقدار می سازیم. هر مقدار نشان می دهد رویداد با نرخ 2، چند بار در یک بازه رخ داده است.

from numpy import random

x = random.poisson(lam=2, size=10)

print(x)

مشاهده در ادیتور

هر بار کد را اجرا کنی، عددها کمی عوض می شوند. اما هنوز بیشتر مقدارها نزدیک نرخ اصلی یعنی دو هستند.

نمایش نمودار توزیع پواسون با Seaborn

برای فهم بهتر توزیع پواسون در پایتون، نمودار آن خیلی کمک می کند. در منبع، با Seaborn و Matplotlib نمودار توزیع را رسم می کنیم.

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.displot(random.poisson(lam=2, size=1000))

plt.show()

مشاهده در ادیتور

در نمودار، می بینی بیشتر ستون ها نزدیک عدد 2 هستند. یعنی تعداد رخدادها معمولا نزدیک نرخ متوسط می ماند.

تفاوت توزیع نرمال و توزیع پواسون

توزیع نرمال پیوسته است، اما توزیع پواسون گسسته است. در نرمال، روی همه عددهای حقیقی کار می کنیم، اما در پواسون فقط روی عددهای صحیح.

با این حال، اگر lam بزرگ باشد، توزیع پواسون شبیه توزیع نرمال می شود. در منبع، این شباهت با یک مثال و نمودار نشان داده شده است.

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

data = {
  "normal": random.normal(loc=50, scale=7, size=1000),
  "poisson": random.poisson(lam=50, size=1000)
}

sns.displot(data, kind="kde")

plt.show()

مشاهده در ادیتور

در این نمودار، دو منحنی خیلی شبیه هم دیده می شوند. برای یادگیری بیشتر می توانی بعدا به صفحه توزیع نرمال در پایتون هم سر بزنی.

تفاوت توزیع دوجمله ای و توزیع پواسون

در توزیع دوجمله ای فقط دو نتیجه ممکن داریم. مثلا شیر یا خط. اما توزیع پواسون تعداد رخداد را می شمارد و می تواند تعدادهای مختلف داشته باشد.

با این حال، اگر در توزیع دوجمله ای تعداد آزمون ها خیلی زیاد باشد و احتمال p خیلی کوچک باشد، این توزیع شبیه پواسون می شود. شرط تقریبی این است که n * p تقریبا برابر lam باشد.

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

data = {
  "binomial": random.binomial(n=1000, p=0.01, size=1000),
  "poisson": random.poisson(lam=10, size=1000)
}

sns.displot(data, kind="kde")

plt.show()

مشاهده در ادیتور

در نمودار منبع می بینی دو منحنی تقریبا روی هم قرار می گیرند. برای مرور توزیع دوجمله ای می توانی از صفحه توزیع دوجمله ای در پایتون کمک بگیری.

تمرین گام به گام با توزیع پواسون در پایتون

برای تمرین، این مراحل را انجام بده و با توزیع پواسون در پایتون راحت تر شو.

  1. با random.poisson(lam=3, size=20) یک آرایه بساز و خروجی را ببین.
  2. lam را تغییر بده؛ مثلا 1، 5 و 10. ببین عددها چگونه عوض می شوند.
  3. خروجی را در یک نمودار با sns.displot نمایش بده.
  4. نتیجه را با نمودارهای توزیع نرمال و دوجمله ای مقایسه کن و برای مرور از صفحات توزیع نرمال در پایتون و توزیع دوجمله ای در پایتون کمک بگیر.
  5. در پایان، یک بار دیگر این صفحه توزیع پواسون در پایتون را مرور کن.

جمع بندی سریع

  • توزیع پواسون در پایتون برای شمردن تعداد رخدادها استفاده می شود.
  • تابع random.poisson() در نامپای، این توزیع را تولید می کند.
  • lam نرخ متوسط رخداد است و size شکل آرایه خروجی را مشخص می کند.
  • توزیع پواسون گسسته است، اما برای lam بزرگ شبیه توزیع نرمال می شود.
  • برای n بزرگ و p کوچک در توزیع دوجمله ای، نتیجه شبیه توزیع پواسون با lam برابر n * p است.