Pengertian dan Cara Normalisasi Data

By | January 18, 2024
Print Friendly, PDF & Email
7,460 Views

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

    \[X\prime=\frac{X-\mu}{\sigma}\]

dengan \mu adalah rerata/mean dan \sigma adalah standar variasi, sebagai contoh

kalian punya data array seperti berikut

    \[X=[8,2,5,7,9]\]

nilai

    \[\mu=6.2\]

dan

    \[\sigma= 2.7749\]

hasilnya

    \[X\prime=[0.64867, -1.51357, -0.43245, 0.28830, 1.00905]\]

Normalisasi

Langkah selanjutnya untuk menskala kan agar nilai mempunyai nilai tertentu, misalkan punya range 0\leq X \leq 1 dengan rumus seperti berikut (Matlab)

    \[X\prime\prime=\frac{X\prime-X\prime_{min}}{X\prime_{max}-X\prime_{min}}*(A-B)+B\]

dengan A adalah batas atas dan B adalah batas bawah, dalam hal ini kita berikan nilai

    \[A=1\]

dan

    \[B=0\]

maka nilai minimal dan maksimal dari normalisasi data X\prime yaitu

    \[X\prime_{min}= -1.51357\]

    \[X\prime_{max}= 1.00905\]

sehingga nilai range nya menjadi

    \[X\prime\prime =[0.85714,0.00000, 0.42857, 0.71429, 1.00000]\]

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 -1\leq X \leq 1, kalian bisa ubah saja nilai B=-1 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

    \[X\prime=\frac{X\prime\prime(X\prime_{max}-X\prime_{min})+B}{(A-B)}+X\prime_{min}\]

 

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.        ]]

 

 

Leave a Reply