Materi
Atribut dengan satuan berbeda, seperti umur dalam tahun dan gaji dalam juta rupiah, punya rentang yang berbeda jauh. Metode berbasis jarak di modul 4 akan didominasi atribut yang angkanya paling besar. Normalisasi menyamakan skalanya. Kelas Machine Learning Dasar memakai MinMaxScaler dan StandardScaler di dalam Pipeline; di sini rumusnya dihitung sendiri supaya hasil pustaka bisa diperiksa.
Min-max memetakan nilai ke rentang baru: x' = (x − min) ÷ (maks − min) × (maks_baru − min_baru) + min_baru. Dengan rentang 0 sampai 1, nilai minimum menjadi 0 dan maksimum menjadi 1. Dokumentasi MinMaxScaler menulis rumus yang sama, dengan rentang baru diatur lewat parameter feature_range.
Z-score menyatakan jarak sebuah nilai dari rata-rata dalam satuan simpangan baku: z = (x − rata-rata) ÷ s. NIST/SEMATECH e-Handbook mendefinisikan s sebagai simpangan baku sampel, dengan pembagi n − 1. Series.std() di pandas memakai pembagi n − 1, sedangkan StandardScaler dan scipy.stats.zscore bawaan memakai pembagi n (ddof=0). Contoh: data 2, 4, 6, 8 punya rata-rata 5. Dengan s sampel √(20 ÷ 3) ≈ 2,582, z untuk 8 ≈ 1,16; dengan pembagi n simpangannya √5 ≈ 2,236 dan z ≈ 1,34.
import pandas as pd
s = pd.Series([2, 4, 6, 8])
print(((s - s.min()) / (s.max() - s.min())).round(3).tolist()) # [0.0, 0.333, 0.667, 1.0]
print(((s - s.mean()) / s.std()).round(2).tolist()) # [-1.16, -0.39, 0.39, 1.16]