نرمالسازی دادهها به روش Z-score (استانداردسازی).
.
├── Data_Normalization.py # کد اصلی
└── Test.py # تستها
میانگین لیست را برمیگرداند.
اگر لیست خالی باشد، None برمیگرداند.
loc([1, 2, 3]) # 2.0
loc([]) # Noneانحراف معیار جمعیت را برمیگرداند (تقسیم بر n، نه n-1).
اگر لیست خالی باشد، None برمیگرداند.
scale([1, 4, 6, 9]) # ≈ 2.9155
scale([]) # Noneلیست استانداردشده را برمیگرداند:
z = (x - mean) / std
اگر لیست خالی باشد یا انحراف معیار صفر باشد، همان لیست ورودی برگردانده میشود.
norm([1, 4, 6, 9])
# [-1.3719..., -0.3429..., 0.3429..., 1.3719...]
norm([10]) # [10] (s = 0)
norm([12, 12, 12]) # [12, 12, 12] (s = 0)
norm([]) # []import Data_Normalization as dn
lst = [-10, 0, 25, 50, 75, 100, 110]
print(dn.loc(lst)) # 50.0
print(dn.scale(lst)) # ≈ 43.83
print(dn.norm(lst))python Test.pyاگر همهٔ assertها پاس شوند، پیام موفقیت چاپ میشود.
- انحراف معیار بهصورت جمعیت محاسبه میشود، نه نمونه.
- در حالت
std = 0(همهٔ اعداد برابر)، نرمالسازی تعریفنشده است؛ بهجای خطا، لیست اصلی برگردانده میشود. - در تستها از
math.iscloseبرای مقایسهٔ اعداد اعشاری استفاده شده است. - در تستها از
is Noneبهجای== Noneاستفاده شده (طبق PEP 8).
mean = Σx / n
std = √( Σ(x - mean)² / n )
z = (x - mean) / std