Normalisasi DataFrame
Normalisasi data adalah proses penyesuaian nilai yang diukur dalam skala yang berbeda menjadi skala yang umum. Kita akan menjelaskan bagaimana menerapkan normalisasi pada Pandas DataFrame menggunakan Scikit-learn.
Normalisasi Min-Max
Normalisasi Min-Max adalah teknik yang mengubah atribut-atribut menjadi rentang [0,1]. Hal ini dilakukan dengan mengurangi nilai minimum dari dataset dan kemudian membaginya dengan rentang dataset.
Berikut adalah contoh implementasinya menggunakan Python:
from sklearn.preprocessing import MinMaxScaler
# Create a sample DataFrame
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': [10, 20, 30, 40, 50],
'C': [100, 200, 300, 400, 500]
})
# Create a scaler object
scaler = MinMaxScaler()
# Fit and transform the DataFrame
df_normalized = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)
DataFrame yang sudah dinormalisasi (df_normalized
) akan terlihat seperti ini:
A B C
0 0.0 0.0 0.0
1 0.25 0.25 0.25
2 0.5 0.5 0.5
3 0.75 0.75 0.75
4 1.0 1.0 1.0
Standarisasi
Standarisasi adalah teknik yang mengubah atribut-atribut sehingga distribusinya memiliki rata-rata 0 dan simpangan baku 1. Hal ini dilakukan dengan mengurangi rata-rata dari dataset dan kemudian membaginya dengan simpangan baku.
Berikut adalah contoh implementasinya menggunakan Python:
import pandas as pd
from sklearn.preprocessing import StandardScaler
# Create a sample DataFrame
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': [10, 20, 30, 40, 50],
'C': [100, 200, 300, 400, 500]
})
# Create a scaler object
scaler = StandardScaler()
# Fit and transform the DataFrame
df_normalized = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)
DataFrame yang sudah distandarisasi (df_normalized
) akan terlihat seperti ini:
A B C
0 -1.414214 -1.414214 -1.414214
1 -0.707107 -0.707107 -0.707107
2 0.000000 0.000000 0.000000
3 0.707107 0.707107 0.707107
4 1.414214 1.414214 1.414214
Memisahkan Proses Fit dan Transform
Dalam beberapa kasus, mungkin perlu memisahkan proses fit
dan transform
, terutama ketika kita perlu menerapkan parameter skalasi yang sama pada dataset yang berbeda (misalnya, set data latihan dan set data uji).
Pertama, kita dapat menggunakan metode fit
untuk menghitung nilai minimum, maksimum, rata-rata, dan simpangan baku (tergantung pada teknik normalisasi) pada set data latihan. Kemudian kita menggunakan metode transform
untuk melakukan normalisasi pada set data latihan dan set data uji.
Berikut adalah contoh implementasinya menggunakan Python:
# Create a scaler object
scaler = StandardScaler()
# Apply fit method to training data
scaler.fit(df_train)
# Use transform method on both training and test data
df_train_normalized = pd.DataFrame(scaler.transform(df_train), columns=df_train.columns)
df_test_normalized = pd.DataFrame(scaler.transform(df_test), columns=df_test.columns)
Metode fit
digunakan untuk mempelajari parameter dari data latihan, sedangkan metode transform
digunakan untuk menerapkan parameter tersebut pada normalisasi data. Dengan cara ini, baik data latihan maupun data uji dinormalisasi dengan parameter yang sama, sehingga memastikan konsistensi dalam pipeline machine learning Anda.
Inverse Transformation: Kembali ke Nilai Asli
Setelah normalisasi, jika Anda ingin mengubah data kembali ke bentuk aslinya, Anda dapat menggunakan metode inverse_transform
. Hal ini berguna ketika Anda ingin menginterpretasikan hasil Anda dalam skala asli.
Berikut adalah contoh implementasi:
# Inverse transform the normalized data
df_inverse = pd.DataFrame(scaler.inverse_transform(df_normalized), columns=df.columns)
Setelah operasi ini, df_inverse
akan sama dengan DataFrame asli df
.
Normalisasi Kolom-Kolom Tertentu
Dalam beberapa skenario, mungkin perlu melakukan normalisasi hanya pada kolom-kolom tertentu dalam DataFrame. Hal ini dapat dilakukan dengan menerapkan scaler pada kolom-kolom tersebut.
Berikut adalah contoh implementasinya menggunakan Python:
# Create a scaler object
scaler = StandardScaler()
# Apply fit_transform to specific columns
df['A'] = scaler.fit_transform(df[['A']])
Pada contoh ini, hanya kolom 'A' yang dinormalisasi. Perhatikan tanda kurung ganda [['A']]
yang digunakan untuk memastikan DataFrame diteruskan ke fungsi fit_transform
. Hal ini karena scikit-learn mengharapkan data input berdimensi 2.
Untuk beberapa kolom, Anda dapat menyediakan daftar nama kolom:
df[['A', 'B']] = scaler.fit_transform(df[['A', 'B']])
Ini akan melakukan normalisasi hanya pada kolom 'A' dan 'B', dan menjaga sisa DataFrame tetap tidak berubah.