نرمال سازی داده ها یکی از رایج ترین فعالیت ها در ماشین لرنینگ است. از جمله مزایای نرمال سازی داده می توان به بهبود عملکرد گرادیان کاهشی (gradient descent) بر روی داده های نرمال شده در مقایسه با داده های غیر نرمال اشاره کرد.
در ادامه یک مثال از نرمال سازی را به دو روش استفاده از کتابخانه numpy و حلقه for بررسی می کنیم.
برای نرمال سازی داده های فوق، مقادیر هر سطر را به توان 2 رسانده و با یکدیگر جمع می کنم.
در ادامه تک تک درایه های ماتریس را به مقادیر محاسبه شده در مرحله قبل تقسیم می کنیم.
برای پیاده سازی مثال فوق می توانیم از حلقه for به صورت زیر استفاده کنیم:
x = [ [1,3,5], [7,9,11] ] first_step = [] for i in range(len(x)): mytemp = 0 for j in range(len(x[i])): mytemp += (x[i][j])**2 first_step.append(mytemp ** (1/2)) print("With for loop", first_step)
نتیجه زیر پس از اجرای کد به دست می آید:
With for loop [5.916079783099616, 15.84297951775486]
برای پیاده سازی این مثال با استفاده از کتابخانه numpy تنها به یک خط کد نیاز است:
import numpy as np x = [ [1,3,5], [7,9,11] ] print("With numpy", np.linalg.norm(x,axis=1,keepdims=True))
نتیجه زیر پس از اجرای کد به دست می آید:
With numpy [[ 5.91607978]
[15.84297952]]
بخش پایانی را نیز می توان به صورت زیر پیاده سازی نمود:
x = [ [1,3,5], [7,9,11] ] frist_step = [] for i in range(len(x)): mytemp = 0 for j in range(len(x[i])): mytemp += (x[i][j])**2 frist_step.append(mytemp ** (1/2)) print("With for loop", frist_step) mytemp3 = [] for i in range(len(x)): mytemp2 = [] for j in range(len(x[i])): mytemp2.append(x[i][j] / frist_step[i]) mytemp3.append(mytemp2) print("x_normalized =", mytemp3)
نتیجه اجرای بخش پایانی نیز به صورت زیر است:
x_normalized = [[0.1690308509457033, 0.50709255283711, 0.8451542547285166], [0.4418360821684622, 0.5680749627880228, 0.6943138434075835]]