Pengertian dan Cara Normalisasi Data
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. ]]