توزیع نرمال (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 هم می گویند.
تمرین: کار عملی با توزیع نرمال
برای تمرین، این چند گام ساده را انجام بده:
- یک آرایه با
random.normal(size=1000)بساز و اعداد را ببین. - با تغییر scale ببین زنگوله چطور پهن تر یا باریک تر می شود.
- با توزیع نرمال در پایتون و Seaborn منحنی KDE را برای داده های خودت رسم کن.
جمع بندی سریع
- توزیع نرمال در پایتون برای مدل کردن خیلی از داده های واقعی استفاده می شود.
- تابع
random.normal()در نامپای اعداد با توزیع نرمال می سازد. - پارامتر loc میانگین زنگوله و پارامتر scale پهنی آن را تعیین می کند.
- پارامتر size شکل آرایه خروجی را مشخص می کند.
- با Seaborn و
displotمی توانی منحنی زنگوله ای توزیع نرمال را ببینی.