Terkadang kita menemui suatu data yang mempunyai beragam rentang sehingga memerlukan keseragaman batas nilai tertentu. Oleh hal tersebut perlu dilakukan normalisasi data. Normalisasi data adalah agar mempunyai nilai rerata NOL dan standar deviasi SATU serta dapat diskala kan dengan nilai rentang tertentu. Suatu data dapat dinormalisasi dengan rumus sebagai berikut
![]()
dengan
adalah rerata/mean dan
adalah standar variasi, sebagai contoh
kalian punya data array seperti berikut
![]()
nilai
![]()
dan
![]()
hasilnya
![]()
Normalisasi
Langkah selanjutnya untuk menskala kan agar nilai mempunyai nilai tertentu, misalkan punya range
dengan rumus seperti berikut (Matlab)
![]()
dengan
adalah batas atas dan
adalah batas bawah, dalam hal ini kita berikan nilai
![]()
dan
![]()
maka nilai minimal dan maksimal dari normalisasi data
yaitu
![]()
![]()
sehingga nilai range nya menjadi
![]()
Kalian bisa menggunakan kode dibawah ini
clc;clear all;close all; x = [8,2,5,7,9]; x_normal = (x-mean(x))./std(x) x_min = min(x_normal) x_max = max(x_normal) A = 1; B = 0; x_range = ((x_normal-x_min)/(x_max-x_min))*(A-B)+B
ataupun kalian ingin punya skala
, kalian bisa ubah saja nilai
seperti kode dibawah ini
clc;clear all;close all; x = [8,2,5,7,9]; x_normal = (x-mean(x))./std(x) x_min = min(x_normal) x_max = max(x_normal) A = 1; B = -1; x_range = ((x_normal-x_min)/(x_max-x_min))*(A-B)+B
hasilnya
x_normal = 0.64867 -1.51357 -0.43245 0.28830 1.00905 x_min = -1.5136 x_max = 1.0090 x_range = 0.71429 -1.00000 -0.14286 0.42857 1.00000
Denormalisasi
Sedangkan untuk rumus denormalisasi yaitu
![]()
Membuat Class Normalisasi di Python
Berikut kalian bisa menggunakan kode dibawah ini untuk melakukan normalisasi bahkan untuk beberapa kolom sekaligus
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Jan 17 20:27:08 2024
@author: mulkansyarif
"""
import numpy as np
class Normalisasi():
def __init__(self,A = 1, B = 0):
self.A = A
self.B = B
pass
def fit(self,a):
a = a.astype(float)
c = a.copy()
if a.ndim==1:
c = self.normalisasi(a)
else:
for j in range(0,a.shape[1]):
b = a[:,j]
buffer = self.normalisasi(b)
c[:,j] = buffer
return c
def normalisasi(self,a):
mean = a.mean()
std = a.std(ddof=1) #agar STD nya sama kyaka di excel
a2 = (a-mean)/std
min_value = a2.min()
max_value = a2.max()
normalisasi = (a2-min_value)/(max_value-min_value)
normalisasi = normalisasi*(self.A-self.B)+self.B
return normalisasi
data = np.array([8, 2, 5, 7, 9])
print('data mentah \n',data)
norm = Normalisasi(A=1,B=0)
h = norm.fit(data)
print('data normalisasi \n', h)
#atau bila menggunakan 2 kolom yang punya nilai yang berbeda2 rentang nya
data2 = np.array([[1,3,8,6,3.0],
[60,80,70,70,120]]).T
print('data mentah \n',data2)
norm = Normalisasi(A=1,B=0)
h = norm.fit(data2)
print('data normalisasi \n', h)
Hasil
data mentah [8 2 5 7 9] data normalisasi [0.85714286 0. 0.42857143 0.71428571 1. ]
Hasil
data mentah [[ 1. 60.] [ 3. 80.] [ 8. 70.] [ 6. 70.] [ 3. 120.]] data normalisasi [[0. 0. ] [0.28571429 0.33333333] [1. 0.16666667] [0.71428571 0.16666667] [0.28571429 1. ]]