توزیع پارتو (Pareto Distribution)
در این صفحه با توزیع پارتو در NumPy آشنا می شوی. این توزیع پارتو (Pareto Distribution) بر اساس قانون 80-20 تعریف شده است. یعنی 20٪ عامل ها 80٪ نتیجه را می سازند.
توزیع پارتو در NumPy چیست؟
طبق متن منبع، توزیع پارتو یک توزیع با قانون 80-20 است. یعنی 20٪ عامل ها باعث 80٪ نتیجه می شوند. مثلاً تعداد کمی از وظایف، بخش بزرگی از نتیجه را می سازند.
در NumPy این رفتار با تابع random.pareto() شبیه سازی می شود. خروجی این تابع عددهایی است که از توزیع پارتو در NumPy پیروی می کنند.
این توزیع دُم بلندی دارد؛ یعنی مقدارهای بزرگ کم اند، اما کاملاً حذف نمی شوند.
پارامترهای توزیع پارتو در NumPy
تابع random.pareto() طبق منبع دو پارامتر اصلی دارد:
- a: پارامتر شکل (Shape Parameter) است.
- size: شکل آرایه خروجی را مشخص می کند.
پارامتر شکل a روی شیب توزیع تاثیر می گذارد. هرچه a بزرگ تر باشد، دُم توزیع پارتو در NumPy سریع تر پایین می آید.
برای دیدن توزیع دیگری با شکل متفاوت، می توانی بعداً صفحه توزیع ریلی در NumPy را هم ببینی.
نمونه گیری از توزیع پارتو در NumPy
در مثال منبع، یک نمونه از توزیع پارتو با شکل 2 ساخته می شود. شکل آرایه خروجی 2x3 است؛ یعنی دو سطر و سه ستون.
گام ها:
- کتابخانه
randomرا از NumPy ایمپورت کن. - تابع
random.pareto()را با پارامترaوsizeصدا بزن. - خروجی را با
print()روی ترمینال نمایش بده.
from numpy import random
x = random.pareto(a=2, size=(2, 3))
print(x)
نکته: اگر مقدارهای خروجی را مرتب کنی، معمولاً چند مقدار نسبتاً بزرگ می بینی و بقیه نزدیک هم اند. این همان حس قانون 80-20 در توزیع پارتو در NumPy است.
نمایش توزیع پارتو روی نمودار
دیدن شکل توزیع پارتو روی نمودار درک آن را ساده می کند. در مثال دوم از matplotlib و seaborn برای رسم استفاده می کنیم.
matplotlib یک کتابخانه رسم نمودار در پایتون است. seaborn هم کتابخانه ای برای کشیدن نمودارهای آماری خوش فرم روی داده ها است.
در کد زیر، هزار نمونه از توزیع پارتو در NumPy می سازیم و نمودارش را رسم می کنیم.
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns
data = random.pareto(a=2, size=1000)
sns.displot(data)
plt.show()
نکته: در نمودار پارتو، مقدارهای کوچک زیادند و هرچه جلوتر می رویم، تعداد مقدارهای بزرگ کم می شود.
قانون 80-20 و نگاه شهودی
قانون 80-20 می گوید 20٪ علت ها 80٪ نتیجه می سازند. توزیع پارتو در NumPy فقط یک مدل ریاضی برای همین ایده است.
مثلاً گاهی تعداد کمی از تمرین ها، بیشتر نمره تو را می سازند. این فقط یک نگاه شهودی برای فهم ساده تر توزیع پارتو است.
جمع بندی سریع توزیع پارتو
اگر خواستی مرور کنی، این صفحه توزیع پارتو در NumPy نقطه شروع خوبی است.
- توزیع پارتو بر پایه قانون 80-20 تعریف می شود.
- در NumPy با
random.pareto()به این توزیع دسترسی داری. - پارامتر شکل
aروی شیب و دُم توزیع اثر دارد. sizeفقط شکل آرایه خروجی را تعیین می کند.- نمودار توزیع پارتو در NumPy مقدارهای کوچک زیاد و مقدارهای بزرگ کم دارد.