Cara menggunakan columnar python

Pada tanggal 17 Februari 2016 lalu, Apache Software Foundation mengumumkan Apache Arrow sebagai top-level project tanpa melalui masa inkubasi yang panjang. Apache Arrow semula merupakan pengembangan dari Apache Drill, dibangun atas kolaborasi beberapa project open source unggulan lainnya dan bertujuan untuk menjadi standar de-facto bagi pemrosesan data in-memory yang tersusun secara columnar. Proyek-proyek Big Data yang telah bergabung dalam pengembangan Apache Arrow adalah Calcite, Cassandra, Drill, Hadoop, HBase, Impala, Kudu (incubating), Parquet, Phoenix, Spark, Storm, Pandas dan Ibis.

Apache Arrow bukan merupakan sebuah engine ataupun sistem penyimpanan. Ia adalah sebuah format dan algoritma untuk bekerja secara hirarkis, in-memory dan columnar serta mendukung sejumlah bahasa pemrograman yang dapat bekerja diatasnya.

“Data dalam memori yang tersusun secara columnar memungkinkan sistem dan aplikasi memproses data pada kecepatan maksimum dari hardware” ujar Todd Lipcon, pendiri Apache Kudu dan anggota komite manajemen Apache Arrow Project.

Pada banyak proses pengolahan data, 70-80% siklus CPU dihabiskan untuk proses serialisasi dan deserialisasi data antar proses. Arrow mengatasi masalah ini dengan memungkinkan adanya sharing data antar sistem dan proses tanpa melalui proses serialisasi, deserialisasi atau penggandaan memory. Penggunaan Apache Arrow diklaim mampu mempercepat proses hingga 100 kali.

Cara menggunakan columnar python
Cara menggunakan columnar python

Arrow juga telah mendukung data yang kompleks dengan skema dinamis. Contohnya, Arrow mampu menangani data JSON yang umumnya digunakan pada proses IoT, aplikasi modern dan log file. Implementasinya juga sedang dikembangkan untuk beberapa bahasa pemrograman termasuk java, c++ dan python untuk memungkinkan interoperabilitas solusi big data yg lebih besar. Software apache arrow sudah rilis dengan menggunakan lisensi Apache v2.0 dan untuk mengunduh software, dokumentasi dan cara bergabung dengan Apache Arrow project silahkan mengunjungi http://arrow.apache.org/

Dalam membuat preprocessing kadang kita perlu menggunakan pipeline untuk memudahkan proses preprocessing dan membuat tahapan preprocessing menjadi otomatis, dalam scikit-learn untuk membuat pipeline dan columntransformer kita diberikan dua pilihan seperti mengunakan ColumnTransformer dan Pipeline atau make_column_transforemer dan make_pipeline. Maka dari itu, dalam artikel ini saya akan menjelaskan sedikit perbedaan dan cara menggunakan fungsi-fungsi tersebut.

ColumnTansformer dan make_column_transformer

Column transfomer digunakan untuk menggabungkan beberapa pipeline yang berbeda, saya sendiri biasanya menggunakan column transformer untuk menggabungkan pipeline awal yang digunakan untuk menagani masing-masing tipe data. misal saya mempunyai dua pipeline yang digunakan untuk preprocessing data numerik dan data kategorik, maka untuk menggabungkan kedua pipeline tersebut saya menggunakan column transformer.

Dalam menggunakan sklearn ada dua syntax yang dapat digunakan untuk menggunakan column transformer, seperti ColumnTransformer dan make_column_transformer. Untuk perbedaan yang ada pada kedua syntax adalah pada ColumnTransformer kita dapat menggunakan nama untuk masing-masing step, sedangkan make_column_transformer tidak menggunakan nama, jadi nama untuk masing-masing step sesuai dengan fungsi yang digunakan. Contoh penulisan dan penggunaaan make_column_transformer adalah sebagai berikut.

Sedangkan untuk melihat parameter yang dapat diubah dalam column transformer adalah menggunakan syntax preprocessing.get_params() dan hasilnya adalah daftar parameter yang dapat diubah seperti yang ditampilkan pada gambar di bawah ini.

parameter yang dapat diubah

Sedangkan untuk hasil fit_transform menggunakan data df yang sudah dibuat pada syntax di atas dapat dilihat hasilnya pada gambar di bawah ini.

hasil fit_transform

Sedangkan untuk penggunaan syntax ColumnTransformer adalah sebagai berikut.

Dapat dilihat pada syntax di atas bahwa apabila kita menggunakan ColumnTransformer untuk penulisannya step kita masukkan ke dalam list, dan masing-masing step dapat kita beri nama bebas sesuai nama yang kita mau. Sedangkan untuk parameter yang ada adalah sebagai berikut.

parameter yang dapat diubah

Seperti gambar yang dapat dilihat di atas, nama untuk masing-masing step akan berguna untuk menuliskan hyper parameter yang akan dirubah. Kemudian untuk hasil fit_transform dari syntax di atas adalah sebagai berikut.

hasil fit_transform

Pipeline dan make_pipeline

Hampir sama dengan penjelasn mengenai column transformer di atas, apabila menggunakan make_pipeline maka nama yang ada untuk masing-masing step adalah sesuai dengan fungsi yang digunakan. Untuk lebih jelasnya dapat kita lihat pada syntax di bawah ini.

Sedangkan untuk parameter yang dapat diubah dapat dilihat pada gambar di bawah ini.

parameter yang dapat diubah

Dan untuk hasil fit_transformnya adalah sebagai berikut.

hasil fit_transform

Sedangkan apabila menggunakan syntax Pipeline, maka hampir sama saat kita menggunakan ColumnTransformer , yaitu kita dapat menamai step sesuai dengan nama yang kita inginkan. Untuk lebih jelasnya dapat melihat syntax di bawah ini.

Seperti yang dapat dilihat di atas, bahwa nama nama step dapat kita tentukan sendiri, seperti kita memberi nama “impute” atau “encoding” dan lain-lain. Sedangkan saat kita ingin melihat parameter apa saja yang dapat diubah dalam pipeline tersebut, maka hasil parameternya adalah sebagai berikut. Nama awal akan sesuai dengan nama yang kita tentukan.