fbpx
scikit-learn Part 5 Blog Banner

Berkenalan dengan scikit-learn (Part 5) – Tambahan untuk Scaling dan Imputation Data

“Statistics are the triumph of the quantitative method, and the quantitative method is the victory of sterility and death.”

~ Hilaire Belloc

Setelah kita membahas mengenai scaling data pada postingan Berkenalan dengan scikit-learn (Part 3) – Scaling Data Menjadi Standard Normal dan Berkenalan dengan scikit-learn (Part 4) – Scaling Data dengan MinMaxScaler. Kali ini kita juga akan membahas mengenai Imputation. 🙂

Dalam ilmu statistika, imputation adalah proses substitusi nilai kosong (missing data/null value/not available) pada dataset. Terdapat beragam metode untuk menangani missing value ini, misalnya dengan menghapus seluruh baris data yang terdapat nilai kosong, mengganti nilai kosong dengan nilai rata-rata (mean) maupun nilai yang sering muncul (mode atau modus) apabila data tersebut numerik, dsb.

Imputation adalah topik yang sangat dalam, sehingga pada kesempatan kali ini, kita berkenalan saja dulu dengan dua contoh implementasinya menggunakan scikit-learn. Selamat membaca & mencoba! 🙂

 

Membuat Idempotent Scalar Objects

 

Kita telah mencoba melakukan standard scaling (scaling ke distribusi normal) pada Berkenalan dengan scikit-learn (Part 3) – Scaling Data Menjadi Standard Normal, menggunakan preprocessing.scale() atau preprocessing.StandardScaler().

Contoh di bawah ini adalah, penggunaan preprocessing.StandardScaler(), apabila parameter with_mean dan with_std kita set menjadi False. Operasi ini akan menghasilkan transformasi identitas (akan menghasilkan dirinya sendiri).

Berikut ini, sedikit bacaan mengenai matriks idempotent dan matriks identitas:

#Create Idempotent Scalar Objects:
identity_transform_scaler = preprocessing.StandardScaler(with_mean=False, with_std=False)
transformed_sd = identity_transform_scaler.fit_transform(X[:, :3]).std(axis=0)
original_sd = X[:, :3].std(axis=0)

Untuk memastikan bahwa feature hasil transformasi sama dengan sebelum ditransformasi, bisa dilihat dari pembandingan deviasi standarnya:

#Bandingkan deviasi standar setelah dan sebelum transformasi:
np.array_equal(transformed_sd, original_sd)

transformed_sd
original_sd

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

 

Sparse Imputations

Di dunia nyata, kita sering menghadapi kasus nilai kosong/missing value seperti yang kita bahas di atas. Apabila data tersebut numerik, kasus tersebut dapat digambarkan seperti sparse matrix atau matriks jarang, yaitu matriks yang mayoritasnya bernilai nol.

Untuk kasus scaling data, sparse matrix tidak ditangani secara khusus/berbeda dari matriks lainnya, karena ketika proses mean centering data, secara otomatis, nilai-nilai nolnya berubah menjadi tidak nol (nonzero values), sehingga matriks tersebut bukan matriks jarang/sparse matrix lagi.

Berikut ini pembuatan sparse matrix menggunakan module scipy, dan preprocessingnya:

import scipy

matrix = scipy.sparse.eye(1000)
preprocessing.scale(matrix)

Ups! Dan ternyata terdapat error. 😀

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.

Mari kita ikuti error messagenya, set parameter with_mean menjadi False, karena tetap memungkinkan untuk scaling menggunakan std saja.

preprocessing.scale(matrix, with_mean=False)

Done!

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.

Sampai bertemu di postingan selanjutnya ya! Semoga bermanfaat selalu, enjoy machine learning. 🙂

 

References & Further Reading

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

3 komentar untuk “Berkenalan dengan scikit-learn (Part 5) – Tambahan untuk Scaling dan Imputation Data”

  1. Ping-kembali: Berkenalan dengan scikit-learn (Part 9) – Beragam Strategi untuk Mengisi Missing Values - hakim-azizul.com

Tinggalkan Komentar

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

Social media & sharing icons powered by UltimatelySocial