Berkenalan dengan scikit-learn (Part 6) – Membuat Binary Features dengan Metode Thresholding

scikit learn part 6 hakim-azizul.com

“At its most fundamental, information is a binary choice. In other words, a single bit of information is one yes-or-no choice.”

~ James Gleick

Di postingan yang telah lalu, kita telah membahas mengenai scaling data. Di postingan kali ini kita akan membahas mengenai cara mentransformasikan data numerik menjadi data biner (binary features/binarizer transformation), dengan menggunakan metode thresholding. Dengan memanfaatkan binary features, kita dapat mengidentifikasi diskontinuitas pada data yang kontinu.

Cara kerja binary features adalah, mengubah data menjadi bernilai 1; apabila nilai sebelumnya > threshold, dan bernilai 0; apabila nilai sebelumnya < threshold. Untuk dataset yang digunakan, kita kembali menggunakan dataset Boston.

Variabel target pada dataset Boston, adalah nilai median dari harga rumah dalam besaran $1000. Dataset ini baik digunakan untuk menerapkan metode regresi dan prediktor kontinu lainnya. Namun, mari kita tinjau situasi dimana kita ingin secara cepat mengidentifikasi harga rumah yang lebih tinggi dari rata-rata. Di sinilah binary features akan berguna. Jika nilainya >= mean; menghasilkan nilai 1, jika < mean; menghasilkan nilai 0.

Selamat membaca dan mencoba, semoga bermanfaat. 🙂

 

Hands-on

Pertama-tama, seperti biasa, kita import terlebih dahulu modul-modul yang dibutuhkan:

from sklearn import datasets
boston = datasets.load_boston()
import numpy as np
#Untuk preprocessing data:
from sklearn import preprocessing

Serupa dengan scaling data, transformasi biner juga memiliki dua cara, yaitu:

#Similar to scaling, there are two ways to binarize features in scikit-learn:
preprocessing.binarize() #a function
preprocessing.Binarizer() #a class

Tampilan 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, Indonesia, ID, Singapore, Asia, Southeast Asia

Sumber Gambar: Dokumentasi 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, Indonesia, ID, Singapore, Asia, Southeast Asia

Sumber Gambar: Dokumentasi Pribadi.

Data yang akan kita transformasikan dari dataset Boston ini adalah variabel targetnya. Untuk menghindari masalah akibat dimensi data atau array, kita lakukan reshaping array dahulu sebagai berikut:

#Reshape data target dari 506, menjadi 506, 1 
X=boston.target.reshape(-1, 1)

Selanjutnya, lakukan transformasi biner menggunakan function .binarize(), dengan variabel X adalah variabel target yang telah di-reshape, dan threshold yang digunakan adalah nilai rataan (mean) dari variabel target. Jalankan perintah berikut:

#Jalankan function .binarize()
new_target = preprocessing.binarize(X, threshold=boston.target.mean())
#Untuk melihat 5 hasil teratas:
new_target[:5]

Berikut ini penampakan 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, Indonesia, ID, Singapore, Asia, Southeast Asia

Sumber Gambar: Dokumentasi Pribadi.

Voila! Kita telah sukses mengubah data numerik menjadi biner. Apabila nilai variabel target >= threshold, maka akan diberi nilai 1, dan nilai 0 apabila < threshold.

Untuk memastikan data telah ditransformasikan dengan benar, dapat juga kita lakukan dengan perintah berikut:

#Untuk memastikan telah berfungsi dengan benar:
(boston.target[:5] > boston.target.mean()).astype(int)

Tampilan hasilnya pada 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, Indonesia, ID, Singapore, Asia, Southeast Asia

Sumber Gambar: Dokumentasi Pribadi.

Hasil yang sama, dapat diperoleh menggunakan class .Binarizer().

bin = preprocessing.Binarizer(boston.target.mean())
new_target2 = bin.fit_transform(X)
new_target2[:5]

Hasilnya:

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, Indonesia, ID, Singapore, Asia, Southeast Asia

Sumber Gambar: Dokumentasi Pribadi.

 

Bonus

Menghandel Sparse Matrix

Apabila kita menerapkan .binarize() atau .Binarizer() pada sparse matrix, kita akan memperoleh error, apabila threshold yang kita set nilainya < 0 (untuk kasus sparse matrix, sudah menjadi syarat kalau threshold tidak boleh kurang dari nol).

#Sparse matrices
from scipy.sparse import coo

spar = coo.coo_matrix(np.random.binomial(1, .25, 100))
preprocessing.binarize(spar, threshold=-1)

Hasil 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, Indonesia, ID, Singapore, Asia, Southeast Asia

Sumber Gambar: Dokumentasi Pribadi.

Sedangkan, apabila kita terapkan threshold >= 0 sebagai berikut:

#Contoh apabila threshold=0:
preprocessing.binarize(spar, threshold=0)
#Contoh apabila threshold=1:
preprocessing.binarize(spar, threshold=1)

Semuanya berjalan dengan baik, tanpa 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, Indonesia, ID, Singapore, Asia, Southeast Asia

Sumber Gambar: Dokumentasi Pribadi.

 

Fit Method

Fit method juga tersedia pada transformasi binarizer, namun fungsinya bukan untuk fitting, namun hanya me-return object.

See you in the next posts! Enjoy machine learning! 😀

 

References & Further Reading

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

Hastie et. al (2015): An Introduction to Statistical Learning – with Applications in R, 6th Printing, Springer.

Follow and like us:

4 tanggapan pada “Berkenalan dengan scikit-learn (Part 6) – Membuat Binary Features dengan Metode Thresholding”

  1. Pingback: Berkenalan dengan scikit-learn (Part 7) – Bekerja dengan Variabel Kategori (Categorical Variables) - hakim-azizul.com

  2. Pingback: Berkenalan dengan scikit-learn (Part 8) – Binarizing Label Features - hakim-azizul.com

Tinggalkan Balasan

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