Traffine I/O

Bahasa Indonesia

2022-12-15

Normalisasi Pandas DataFrame

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:

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:

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:

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:

python
# 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:

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:

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

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!