Berkenalan dengan scikit-learn (Part 4) – Scaling Data dengan MinMaxScaler

Data Scientist, Data Science, Machine Learning, Statistics, Data Science Indonesia, Data Analytics, Data Analysis, Data Analyst, Data, Astronomy, Astronomer, Science, Python, iPython, Jupyter Notebook, R, RStudio, Excel, Coding, Koding, Cara Mengolah Data, Mengolah Data, Olah Data, Programming, Pemrograman, Sains, Teknologi, Ilmu Data, Teknologi Informasi, Tech in Asia, Teknologi, Technology, Sains, Bisnis, Business, Business Analyst, Business Analysis, Social Media Mining, Movie Review, Muhammad Azizul Hakim, Aziz

“As data scientists, our job is to extract signal from noise.”

~ Daniel Tunkelang

Dari postingan sebelumnya, kita telah mengenal metode scaling data menggunakan standard normal (z-score), dengan menetapkan mean 0 dan standard deviation 1. Metode tersebut bukan metode satu-satunya untuk scaling data.

Pada postingan kali ini, kita akan membahas metode lain untuk scaling data numerik, yaitu Min-Max Scaling, yang sering dikenal juga dengan normalisasi data atau normalization (karena z-score juga sering disebut normalization, maka sering terjadi ambiguitas atau tertukar-tukar :D).

Min-Max Scaling bekerja dengan scaling data/menyesuaikan data dalam rentang/range tertentu (range nilai minimum hingga nilai maksimum), dengan rentang yang biasa digunakan adalah 0 hingga 1. Berikut ini adalah uraian matematisnya:

Data Scientist, Data Science, Machine Learning, Statistics, Data Science Indonesia, Data Analytics, Data Analysis, Data Analyst, Data, Astronomy, Astronomer, Science, Python, iPython, Jupyter Notebook, R, RStudio, Excel, Coding, Koding, Cara Mengolah Data, Mengolah Data, Olah Data, Programming, Pemrograman, Sains, Teknologi, Ilmu Data, Teknologi Informasi, Tech in Asia, Teknologi, Technology, Sains, Bisnis, Business, Business Analyst, Business Analysis, Social Media Mining, Movie Review, Muhammad Azizul Hakim, Aziz

Setelah terlebih dahulu kita mengimport library yang dibutuhkan, dan meload dataset kita seperti di posting sebelumnya (part 3), kita lakukan MinMax Scaler, dengan perintah berikut:

#MinMax Scaler:
min_max_scaler = preprocessing.MinMaxScaler()

Scaling tiga feature pertama, dengan perintah berikut:

min_max_scaler.fit(X[:, :3])

Penampakan di console, sebagai berikut:

Data Scientist, Data Science, Machine Learning, Statistics, Data Science Indonesia, Data Analytics, Data Analysis, Data Analyst, Data, Astronomy, Astronomer, Science, Python, iPython, Jupyter Notebook, R, RStudio, Excel, Coding, Koding, Cara Mengolah Data, Mengolah Data, Olah Data, Programming, Pemrograman, Sains, Teknologi, Ilmu Data, Teknologi Informasi, Tech in Asia, Teknologi, Technology, Sains, Bisnis, Business, Business Analyst, Business Analysis, Social Media Mining, Movie Review, Muhammad Azizul Hakim, Aziz

Sumber Gambar: Pengalaman Pribadi.

Selanjutnya mari kita cek, apakah Min-Max Scalernya sudah bekerja dengan baik, dengan perintah berikut ini:

min_max_scaler.transform(X[:, :3]).min(axis=0) #min value after scaling
min_max_scaler.transform(X[:, :3]).max(axis=0) #max value after scaling
min_max_scaler.transform(X[:, :3]).mean(axis=0) #mean after scaling
min_max_scaler.transform(X[:, :3]).std(axis=0) #standard deviation after scaling

Yaitu, dengan kita lihat nilai minimum, maksimum, rata-rata, dan deviasi standar dari masing-masing tiga feature yang kita punya tadi. Berikut ini hasilnya di console:

Data Scientist, Data Science, Machine Learning, Statistics, Data Science Indonesia, Data Analytics, Data Analysis, Data Analyst, Data, Astronomy, Astronomer, Science, Python, iPython, Jupyter Notebook, R, RStudio, Excel, Coding, Koding, Cara Mengolah Data, Mengolah Data, Olah Data, Programming, Pemrograman, Sains, Teknologi, Ilmu Data, Teknologi Informasi, Tech in Asia, Teknologi, Technology, Sains, Bisnis, Business, Business Analyst, Business Analysis, Social Media Mining, Movie Review, Muhammad Azizul Hakim, Aziz

Sumber Gambar: Pengalaman Pribadi.

Data Scientist, Data Science, Machine Learning, Statistics, Data Science Indonesia, Data Analytics, Data Analysis, Data Analyst, Data, Astronomy, Astronomer, Science, Python, iPython, Jupyter Notebook, R, RStudio, Excel, Coding, Koding, Cara Mengolah Data, Mengolah Data, Olah Data, Programming, Pemrograman, Sains, Teknologi, Ilmu Data, Teknologi Informasi, Tech in Asia, Teknologi, Technology, Sains, Bisnis, Business, Business Analyst, Business Analysis, Social Media Mining, Movie Review, Muhammad Azizul Hakim, Aziz

Sumber Gambar: Pengalaman Pribadi.

Data Scientist, Data Science, Machine Learning, Statistics, Data Science Indonesia, Data Analytics, Data Analysis, Data Analyst, Data, Astronomy, Astronomer, Science, Python, iPython, Jupyter Notebook, R, RStudio, Excel, Coding, Koding, Cara Mengolah Data, Mengolah Data, Olah Data, Programming, Pemrograman, Sains, Teknologi, Ilmu Data, Teknologi Informasi, Tech in Asia, Teknologi, Technology, Sains, Bisnis, Business, Business Analyst, Business Analysis, Social Media Mining, Movie Review, Muhammad Azizul Hakim, Aziz

Sumber Gambar: Pengalaman Pribadi.

Data Scientist, Data Science, Machine Learning, Statistics, Data Science Indonesia, Data Analytics, Data Analysis, Data Analyst, Data, Astronomy, Astronomer, Science, Python, iPython, Jupyter Notebook, R, RStudio, Excel, Coding, Koding, Cara Mengolah Data, Mengolah Data, Olah Data, Programming, Pemrograman, Sains, Teknologi, Ilmu Data, Teknologi Informasi, Tech in Asia, Teknologi, Technology, Sains, Bisnis, Business, Business Analyst, Business Analysis, Social Media Mining, Movie Review, Muhammad Azizul Hakim, Aziz

Sumber Gambar: Pengalaman Pribadi.

Voila! Dengan demikian, kita berhasil scaling data kita dengan metode Min-Max Scaling, atau normalisasi menggunakan scikit-learn. 🙂

Dapat kita lihat dari hasil deviasi standarnya bahwa metode normalisasi ini memiliki deviasi standar yang lebih kecil dibandingkan dengan metode standardisasi (standard scaler, di post terdahulu). Hal ini dapat menekan efek outlier (data pencilan).

 

Update 11 Agustus 2018: Mengganti Nilai Minimum dan Maksimum Default.

Bagaimana jika kita ingin membuat range data kita tidak default, atau 0 hingga 1? Misalnya, saya ingin scaling data saya menjadi dalam rentang -pi hingga pi, dengan pi = 3.14. Kita dapat mengubah range defaultnya dengan mengisi feature_range pada .MinMaxScaler, sebagai berikut:

#Change Minimum and Maximum Values of the MinMaxScaler from its Default
min_plus_pi_scaler = preprocessing.MinMaxScaler(feature_range=(-3.14, 3.14))
min_plus_pi_scaler.fit(X[:, :3])

Cek kesuksesan scaling data kita, dengan perintah berikut, untuk mengetahui statistiknya:

min_plus_pi_scaler.transform(X[:, :3]).min(axis=0) #min value after scaling
min_plus_pi_scaler.transform(X[:, :3]).max(axis=0) #max value after scaling
min_plus_pi_scaler.transform(X[:, :3]).mean(axis=0) #mean after scaling
min_plus_pi_scaler.transform(X[:, :3]).std(axis=0) #stdev after scaling

Dengan penampakan pada console sebagai berikut:

Data Scientist, Data Science, Machine Learning, Statistics, Data Science Indonesia, Data Analytics, Data Analysis, Data Analyst, Data, Astronomy, Astronomer, Science, Python, iPython, Jupyter Notebook, R, RStudio, Excel, Coding, Koding, Cara Mengolah Data, Mengolah Data, Olah Data, Programming, Pemrograman, Sains, Teknologi, Ilmu Data, Teknologi Informasi, Tech in Asia, Teknologi, Technology, Sains, Bisnis, Business, Business Analyst, Business Analysis, Social Media Mining, Movie Review, Muhammad Azizul Hakim, Aziz

Sumber Gambar: Pengalaman Pribadi.

Data Scientist, Data Science, Machine Learning, Statistics, Data Science Indonesia, Data Analytics, Data Analysis, Data Analyst, Data, Astronomy, Astronomer, Science, Python, iPython, Jupyter Notebook, R, RStudio, Excel, Coding, Koding, Cara Mengolah Data, Mengolah Data, Olah Data, Programming, Pemrograman, Sains, Teknologi, Ilmu Data, Teknologi Informasi, Tech in Asia, Teknologi, Technology, Sains, Bisnis, Business, Business Analyst, Business Analysis, Social Media Mining, Movie Review, Muhammad Azizul Hakim, Aziz

Sumber Gambar: Pengalaman Pribadi.

Data Scientist, Data Science, Machine Learning, Statistics, Data Science Indonesia, Data Analytics, Data Analysis, Data Analyst, Data, Astronomy, Astronomer, Science, Python, iPython, Jupyter Notebook, R, RStudio, Excel, Coding, Koding, Cara Mengolah Data, Mengolah Data, Olah Data, Programming, Pemrograman, Sains, Teknologi, Ilmu Data, Teknologi Informasi, Tech in Asia, Teknologi, Technology, Sains, Bisnis, Business, Business Analyst, Business Analysis, Social Media Mining, Movie Review, Muhammad Azizul Hakim, Aziz

Sumber Gambar: Pengalaman Pribadi.

Selamat mencoba dan semoga bermanfaat. Stay tuned and enjoy machine learning! 😀

 

References & Further Reading

Hauck T. (2014): scikit-learn Cookbook, Packt Publishing.

Min-Max Scaler.

Min-Max Scaling with mlxtend.

Preprocessing Data.

scikit-learn.

Z-Score.

Follow and like us:

2 tanggapan pada “Berkenalan dengan scikit-learn (Part 4) – Scaling Data dengan MinMaxScaler”

  1. Pingback: Berkenalan dengan scikit-learn (Part 5) – Tambahan untuk Scaling dan Imputation Data – Just Type and Run

  2. Pingback: Berkenalan dengan scikit-learn (Part 5) – Tambahan untuk Scaling dan Imputation Data - hakim-azizul.com

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *