فهرست سرفصل‌های 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 — توزیع نرمال (Normal Distribution)

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

توزیع نرمال (Normal Distribution)

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

آشنایی اولیه با توزیع نرمال در پایتون

توزیع نرمال یک توزیع احتمالی خیلی مهم در آمار است. به آن توزیع گاوسی (Gaussian) هم می گویند، به افتخار ریاضی دان آلمانی گاوس.

خیلی از اتفاق های دنیای واقعی تقریبا از توزیع نرمال پیروی می کنند. مثلا قد آدم ها، ضربان قلب، یا حتی نمره های امتحان کلاس.

در نامپای، برای ساختن توزیع نرمال از تابع random.normal() استفاده می کنیم. این تابع آرایه ای از اعداد بر اساس توزیع نرمال برمی گرداند.

پارامترهای تابع random.normal در نامپای

تابع random.normal() سه پارامتر مهم دارد که باید بشناسی:

  • loc (میانگین): جایی که قله زنگوله قرار می گیرد.
  • scale (انحراف معیار): مشخص می کند زنگوله چقدر پهن یا تیز باشد.
  • size (اندازه): شکل آرایه ای که برمی گردد را تعیین می کند.

اگر توزیع نرمال در پایتون را مثل نمره های یک امتحان تصور کنی، loc وسط نمره ها است و scale نشان می دهد نمره ها چقدر پخش شده اند.

ساخت آرایه با توزیع نرمال پیش فرض

اگر فقط size بدهیم، loc به صورت پیش فرض صفر و scale یک در نظر گرفته می شود.

مثال: آرایه 2×3 با توزیع نرمال

در این مثال یک آرایه دو ردیفی و سه ستونی از اعداد نرمال می سازیم.

from numpy import random

x = random.normal(size=(2, 3))

print(x)

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

خروجی هر بار که کد را اجرا کنی عوض می شود. اما شکل کلی پخش شدن اعداد شبیه زنگوله می ماند.

تنظیم میانگین و انحراف معیار در توزیع نرمال

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

اینجاست که loc و scale به کمک می آیند. loc جای قله را عوض می کند و scale نشان می دهد داده ها چقدر دور و بر قله پخش شوند.

مثال: میانگین برابر 1 و انحراف معیار برابر 2

در این مثال میانگین را 1 و انحراف معیار را 2 می گذاریم و دوباره آرایه 2×3 می سازیم.

from numpy import random

x = random.normal(loc=1, scale=2, size=(2, 3))

print(x)

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

این بار بیشتر عددها نزدیک 1 خواهند بود، اما کمی بالا و پایین می پرند. هرچه scale بزرگ تر باشد، این بالا و پایین رفتن ها بیشتر می شود.

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

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

برای این کار از ترکیب NumPy، Matplotlib و Seaborn استفاده می کنیم. Seaborn با تابع displot منحنی توزیع را رسم می کند.

مثال: رسم منحنی زنگوله ای توزیع نرمال

در این مثال هزار عدد با توزیع نرمال می سازیم و منحنی KDE آن را رسم می کنیم.

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

sns.displot(random.normal(size=1000), kind="kde")

plt.show()

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

نمودار خروجی شبیه یک زنگوله نرم و خوشگل است. به همین دلیل به آن Bell Curve هم می گویند.

تمرین: کار عملی با توزیع نرمال

برای تمرین، این چند گام ساده را انجام بده:

  1. یک آرایه با random.normal(size=1000) بساز و اعداد را ببین.
  2. با تغییر scale ببین زنگوله چطور پهن تر یا باریک تر می شود.
  3. با توزیع نرمال در پایتون و Seaborn منحنی KDE را برای داده های خودت رسم کن.

جمع بندی سریع

  • توزیع نرمال در پایتون برای مدل کردن خیلی از داده های واقعی استفاده می شود.
  • تابع random.normal() در نامپای اعداد با توزیع نرمال می سازد.
  • پارامتر loc میانگین زنگوله و پارامتر scale پهنی آن را تعیین می کند.
  • پارامتر size شکل آرایه خروجی را مشخص می کند.
  • با Seaborn و displot می توانی منحنی زنگوله ای توزیع نرمال را ببینی.