Buldozer for developing Python applications on Android

Mobile applications saat ini merupakan aplikasi yang paling banyak dipakai. Sebagai contoh, hampir jarang pengguna Facebook dengan browser. Mulai dari taxi online, hingga pembarayan menggunakan handphone. Kemudahan karena bentuk yang mudah dibawa menuntuk aplikasi-aplikasi (desktop dan website) disiapkan juga versi mobile-nya. Postingan kali ini hanya mengilustrasikan bagaimana mengkonversi aplikasi berbasis python yang kita buat menjadi aplikasi mobile, salah satu yang terkenal adalah berbasis Android.

Mobile applications are currently the most widely used applications. For example, it is rare to find Facebook users accessing it through a browser. From online taxis to mobile payments, smartphones have made it convenient to access various applications. As a result, many applications (both desktop and website-based) have prepared mobile versions. This post will illustrate how to convert a Python-based application into a mobile application, specifically focusing on the popular Android platform.

A. Kivy

Salah satu library python yang banyak digunakan untuk membuat aplikasi Python agar bisa berjalan di mobile app adalah Kivy, lihat post terdahulu untuk lengkapnya. Masih menggunakan aplikasi pada post sebelumnya sebagai ilustrasi. Berikut tampilan GUI dengan Kivy setelah dirunningl.

One of the widely used Python libraries for creating Python applications that can run on mobile apps is Kivy, as mentioned in the previous post. Continuing with the application from the previous post as an illustration, here is the GUI appearance with Kivy after running it.

B. Buldozer

Buldozer merupakan satu paket berbasis Python untuk membuat apk dari bahasa Python yang dibuat dengan library kivy. Kira-kira tampilannya sebagai berikut. Silahkan lihat di google colab ini. Uniknya, buldozer dapat dijalankan lewat Google Colab, sehingga hanya membutuhkan browser saja. Metode lainnya lihat postingan ini.

Bulldozer is a Python-based package for creating APK files from Python code built with the Kivy library. Here is an example of its appearance. Please refer to this Google Colab link for more details. The unique feature of Bulldozer is that it can be executed through Google Colab, requiring only a web browser. For alternative methods, please refer to this post.

C. File Buldozer.spec

Perhatikan setiap instalasi pada cell di colab jangan sampai ada error (berwarna merah). Ketika inisialisasi, buldozer.spec muncul dan siap dijalankan, juga dengan Google Colab. Ganti nama aplikasi, tampilan splash dan icon. Untuk requirements di baris ke 40 tambahkan library-library yang digunakan, beserta versinya, misalnya kivy==2.2.0. Library lain tambahkan jika ada di impor pada header python, misal pillow, tensorflow, dll.

Please ensure that there are no errors (in red color) during the installation process in each cell in Colab. When initializing, the bulldozer.spec file will appear and is ready to be executed, even in Google Colab. You can rename the application, customize the splash screen, and change the icon. In line 40, add the required libraries along with their versions to the requirements, for example, kivy==2.2.0. If there are any additional libraries imported in the Python header, such as Pillow, TensorFlow, etc., please include them as well.

Jangan lupa menghilangkan hastag # jika akan digunakan. Please remember to remove the ‘#’ symbol if you intend to use the code.

D. Menjalankan (running) File Apk

Nah, repotnya adalah proses kompilasi yang hampir setengah jam. Jika sudah tinggal dipindah apk yang dihasilkan untuk diinstal di handphone. Lokasi apk ada di folder bin. Pastikan Android paket sudah selesai terbentuk di bagian akhir google colab.

Well, the inconvenience lies in the compilation process which takes nearly half an hour. Once it’s done, you just need to transfer the generated APK file to your mobile device for installation. The APK file can be found in the ‘bin’ folder. Make sure that the Android package has been successfully created towards the end of Google Colab.

Tampilannya kira-kira seperti ini, mirip dengan versi Kivy python.

The appearance would be something like this, similar to the Kivy Python version.

Sekian, video youtube dapat dilihat di link berikut, terima kasih.

That’s all, the YouTube video can be viewed at the following link. Thank you.

Kivy, a Python-based Object-oriented Application Interface

Perkembangan teknologi software development saat ini sangat pesat. Ditambah lagi saat ini ada ChatGPT yang cukup membantu. Dengan kata kunci “buatkan kode python untuk menjumlahkan dua angka dengan interface menggunakan kivy agar bisa jalan di android” responnya cukup baik, yaitu berupa source code yang diinginkan.

The current software development technology is advancing rapidly, and with the availability of helpful tools like ChatGPT, the process becomes even smoother. By providing the keywords “create Python code to add two numbers with an interface using Kivy to run on Android,” a satisfactory response is generated in the form of the desired source code.

Berikutnya kita coba jalankan kode tersebut dengan Visual Studio Code. Oiya, install terlebih dahulu library kivy.

Next, let’s try running the code using Visual Studio Code. Oh, and don’t forget to install the Kivy library beforehand.

pip install kivy

Problem di atas hanya ilustrasi saja (penjumlahan dua inputan). Untuk yang lebih kompleks dapat menggunakan cara tersebut, yang penting mengetahui teknik input, memproses dan mengeluarkan outputnya.

The problem above is just an illustration (summing two inputs). For more complex tasks, you can use the same approach, as long as you understand the techniques for handling input, processing it, and producing the desired output.

Jalankan kode tersebut dengan masuk ke Run – Run Without Debugging. Atau jika menggunakan editor lain, masuk ke command window dilanjutkan mengetik:

To run the code, follow these steps: Open your preferred editor (e.g., Visual Studio Code), navigate to the “Run” menu and select “Run Without Debugging”. This will execute the code. If using a different editor, access the command window and type the following command:

python penjumlahan.py

Perhatikan, sebuh GUI muncul dengan input dan output yang bisa dikonversi lebih lanjut menjadi aplikasi mobil lewat library buldozer.

Note that a GUI will appear with input and output, which can be further converted into a mobile application using the Kivy library’s “Buildozer”.

Convert Python file to Exe File

Mahasiswa jaman dulu sudah mengenal kompilasi program menjadi file executable. File jenis ini tidak bisa langsung dilihat kode programnya, sehingga lebih aman dari ‘penggunaan kembali’ oleh orang lain. Postingan ini khusus untuk pengguna windows, platform yang bisa menjalankan langsung dile EXE.

Pertama-tama siapkan dahulu file python yang akan dikonversi dilanjutkan dengan menuju ke lokasi foldernya. Klik kanan dan pilih Open in Terminal. Atau bisa masuk langsung ke Command lalu arahkan ke folder aplikasi.

In the past, students were already familiar with compiling programs into executable files. This type of file cannot be directly viewed as source code, making it safer from being reused by others. This post is specifically for Windows users, a platform that can directly run EXE files.

First, prepare the Python file that will be converted, then navigate to its folder location. Right-click and select “Open in Terminal.” Alternatively, you can directly go to the Command Prompt and navigate to the application folder.

A. Install Pyinstaller

Setelah masuk ke command prompt, install library untuk konversi ke executable, yakni pyinstaller. Ketik kode:

After entering the Command Prompt, install the library for converting to an executable, which is pyinstaller. Type the following code:

pip install pyinstaller

B. Run Pyinstaller

Setelah pyinstaller terinstall, jalankan untuk mengkonversi file py menjadi exe. Ketikan instruksi:

After pyinstaller is installed, run it to convert the .py file to .exe. Type the following command:

pyinstaller –onefile -w process.py

Proses kompilasi berjalan dengan lama tergantung kompleksitasnya. Untuk program contoh, cukup lama prosesnya (sepeminuman the). Setelah selesai, pada folder dist tampak process.exe sudah terbentuk. Selanjutnya saya pindahkan ke folder tempat akan dieksekusi. Ukurannya fantastis, 500-an Mb, dibanding dengan sebelumnya yang 1 Kb. Mungkin akibat memasukan library-library yang digunakan. Salah satunya adalah tensorflow.

The compilation process takes time depending on its complexity. For the example program, it took quite a while (around a few minutes). Once it’s done, you will see that the process.exe file is created in the “dist” folder. Next, you can move it to the folder where you want to execute it. The size of the executable file is significantly larger, around several hundred megabytes, compared to the original file size of 1 KB. This increase in size is likely due to the inclusion of the libraries used in the program. One of them is TensorFlow.

C. Cek Hasil Konversi

Berikutnya kita uji dengan menjalankan file EXE. Kebetulan di sini file exe akan diakses oleh file PHP (maaf, rumit ya). Sebelumnya diakses dengan kode pada process.php sebagai berikut:

Next, we will test the executable file by running the EXE file. In this case, the EXE file will be accessed by a PHP file (apologies for the complexity). Before accessing it, use the following code in process.php:

Kemudian di sini process.py akan kita ganti dengan process.exe yang baru saja kita konversi. Ganti menjadi sebagai berikut.

Then, here we will replace process.py with the newly converted process.exe. Change it as follows:

Untuk memastikan bukan file process.py yang dipakai, ganti saja (rename), misalnya xprocess.py. Setelah itu jalankan file phpnya dengan kode:

To ensure that the file being used is not process.py, simply rename it, for example, to xprocess.py. After that, run the PHP file with the following code:

php -S localhost:8000

Atau gunakan cara biasa dengan XAMPP setelah memindahkan file aplikasi ke htdocs (lihat pos yang lalu).

Alternatively, you can use the conventional method with XAMPP after moving the application files to the htdocs directory (as mentioned in the previous post).

Dengan memasukan 4 input, file html tersebut menjalankan file process.php yang menangkap inputan, selanjutnya mengakses file process.exe yang sebelumnya python. Jadi, jika ingin kode rahasia Anda tidak bisa dibuka karena file .py maka dengan .exe akan lebih aman. Lebih jelasnya lihat video youtube berikut:

By entering 4 inputs, the HTML file executes the process.php file, which captures the inputs and then accesses the previously Python file, process.exe. So, if you want to protect your secret code from being easily accessed, using .exe files instead of .py files will provide more security. For more clarity, please refer to the following YouTube video:

Scrapping Media Online dengan NEWSAPI.ORG

Bagi Anda yang ingin melakukan analisa media online, ada baiknya mendaftarkan API key pada Newsapi.org. NewsAPI.org adalah sebuah platform yang menyediakan akses ke ribuan artikel berita dari berbagai sumber media di seluruh dunia. Platform ini memungkinkan pengguna untuk mengakses berita terbaru dari berbagai kategori seperti politik, bisnis, hiburan, olahraga, dan banyak lagi. NewsAPI.org memiliki antarmuka pemrograman aplikasi (API) yang mudah digunakan oleh pengembang untuk mengambil data dan menyajikannya di aplikasi mereka.

NewsAPI.org menawarkan berbagai fitur dan fungsi yang berguna bagi pengguna dan pengembang aplikasi. Fitur yang tersedia di antaranya adalah kemampuan untuk memilih sumber berita yang diinginkan, menampilkan gambar dan video dalam artikel berita, dan mengatur hasil pencarian berdasarkan kata kunci dan tanggal terbit. NewsAPI.org juga menyediakan fitur untuk mengelompokkan artikel berita berdasarkan kategori dan sumber berita.

Salah satu keuntungan menggunakan NewsAPI.org adalah penggunaan data yang akurat dan up-to-date. Platform ini mengumpulkan dan mengelola berita dari berbagai sumber media terkemuka seperti BBC, CNN, dan New York Times. Hal ini memastikan bahwa pengguna mendapatkan akses ke berita terbaru dan terpercaya dari sumber yang terpercaya. Selain itu, NewsAPI.org juga menyediakan dokumentasi yang lengkap dan mudah dipahami bagi pengembang aplikasi yang ingin memanfaatkan API mereka. Format contoh mengaksesnya adalah sebagai berikut (NOTE: Gunakan API key Anda dengan daftar terlebih dahulu di newsapi.org).

<!DOCTYPE
html>
<html>
<head>
<title>News API Example</title>
</head>
<body>
<h1>News API Example</h1>
<p
id=“articles”></p>
<script>
const url = https://newsapi.org/v2/everything?q=politik%20indonesia&sortBy=date&apiKey=<APIKEY>&#8221;;
fetch(url)

.then(response => response.json())
.then(data => {
const articles = data.articles;

const articleList = document.getElementById(“articles”);
let html = “”;
for (let i = 0; i < articles.length; i++) {
const article = articles[i];

html += `<h2>${article.title}</h2>`;
html += `<p>${article.description}</p>`;
html += `<a href=”${article.url}“>Read More</a>`;
}
articleList.innerHTML = html;

})
.catch(error => {
console.log(error);

});
</script>
</body>
</html>

Berikut ini tampilan HTML yang mengaksses API. Untuk lebih spesifik, misal artikel Indonesia tentang politik.

Mengatasi Problem Impor Data Besar MySQL

Ketika mengimpor data yang besar terkadang ada masalah di sisi server. Hal ini terjadi pada aplikasi dengan cronjob yang men-scrap data dari beragam sumber. Ada banyak cara yang dapat dilakukan, antara lain:

  • Gunakan command line: Jika file dump database yang ingin Kita impor cukup besar, Kita bisa menggunakan command line untuk mengimpor file tersebut ke dalam database Kita. Kita bisa menggunakan perintah seperti “mysql -u [username] -p [database_name] < [file_name].sql” untuk mengimpor file SQL. Pastikan untuk mengganti [username], [database_name], dan [file_name] dengan informasi yang sesuai untuk sistem Kita.
  • Naikkan batas ukuran file: Jika Kita masih ingin menggunakan phpMyAdmin, Kita bisa mencoba untuk meningkatkan batas ukuran file yang diizinkan untuk diunggah. Kita bisa mengubah pengaturan “upload_max_filesize” dan “post_max_size” di file php.ini. Pastikan untuk menyimpan perubahan dan me-restart server web Kita setelah melakukan perubahan.
  • Gunakan perangkat lunak alternatif: Jika kedua solusi di atas tidak berhasil, Kita bisa mencoba menggunakan perangkat lunak alternatif seperti MySQL Workbench atau Adminer untuk mengimpor data ke dalam database Kita.
  • Bagi file dump menjadi beberapa bagian: Jika file dump database Kita terlalu besar, Kita bisa mencoba untuk membaginya menjadi beberapa bagian yang lebih kecil dan mengimpor setiap bagian secara terpisah.
  • Gunakan layanan cloud: Jika tidak memungkinkan untuk mengimpor data secara lokal pada server, Kita bisa menggunakan layanan cloud seperti Google Cloud SQL atau Amazon RDS untuk mengimpor data ke dalam database. Layanan cloud ini biasanya menawarkan dukungan untuk mengimpor data besar dan menangani pengaturan infrastruktur database secara otomatis.

MySQL Workbench

Silahkan coba langkah-langkah di atas, dimulai dari menggunakan command line. Tapi jika alergi dengan terminal/command line pada cara pertama, atau bingung utak-atik “upload_max_filesize” langkah kedua, bisa gunakan MySQL Workbench berikut. Jalankan Run SQL Script.

Bagi File Dump

Cara praktis berikutnya adalah dengan men-scrap data per bagian, misalnya perbulan, atau beberapa hari. Sebagai contoh python berikut:

SELECT * FROM <tabel> WHERE `DATE` >= ‘2023-01-01’ AND `DATE` <= ‘2023-01-15’; akan menangkap data beberapa hari. Selanjutnya eksport ‘data_artikel_csv’ yang dihasilkan, misalnya dengan Phpmyadmin.

Ganti host, user, password, dan database sesuai yang akan dimasukan datanya. Gunakan kode SQL Select, gunakan tanggal tertentu agar tidak berat, bisa gunakan bulan sebagai basisnya. Di sini saya menggunakan 15 hari karena sebulan terlalu besar. Jalankan kode di atas, pastikan akan muncul file data_artikel.csv.

Selanjutkan Import kembali dengan Phpmyadmin (bisa juga dengan MySQL Workbench). Pastikan berjalan dengan baik.

Cek isi tabel, apakah sudah sesuai. Sekian semoga bisa membantu.

NOTE: Saya pernah mencoba dengan MySQL workbench menggunakan kode SQL:

SELECT * FROM <tabel> WHERE `DATE` >= ‘2023-01-01’ AND `DATE` <= ‘2023-01-15’;

Lalu menekan eksport ke CSV. Tetapi ketika diimport via Pypmyadmin (cPanel) ada kesalahan berikut. Kalau tidak bisa diatasi, silahkan gunakan kode Python dengan Pandas yang menghasilkan CSV cara sebelumnya.

Mengelola File CSV untuk Training Web-Python dengan PHP

Beberapa sampel prediksi dengan neural networks (NNs) biasanya menggunakan dataset yang tersedia pada library yang digunakan, misalnya Sklearn. Namun dalam implementasinya dataset harus disediakan terlebih dahulu, misalnya dengan file Comma Separated Valud (CSV). Oleh karena itu keterampilan mengelola data sendiri tersebut sangat diperlukan. Postingan ini mengilustrasikan bagaimana mengelolanya.

Mengunduh Dataset

Untuk yang sedang mengerjakan proyek akhir biasanya mengambil data sendiri lewat survey. Untuk latihan bisa akses link berikut: iris.csv. Setelah itu ekstrak file archive tersebut. Tempatkan di folder dimana aplikasi akan dibuat.

Mempersiapkan Interace Untuk Training

Data iris memiliki empat input dan tiga kelas output: setosa, versicolor, dan virginica. Untuk mudahnya, bertanya saja kepada ChatGPT dengan kata kunci sebagai berikut:

create html code to upload csv file and use php to open python for neural network training and save trained h5

Berikutnya akan disediakan 1 index.html untuk interface utama, 1 file upload.php untuk, 1 file train.py untuk mentrainingnya Hasil tersimpan dalam format H5. Perhatikan, karena label/target masih string maka perlu dikonversi menjadi number. Untuk jelasnya silahkan lihat video berikut ini:

 

 

Memahami Level S1, S2, dan S3

Jenjang pendidikan selepas SMA jauh lebih rumit. Banyak variasi yang ada, baik itu dari sisi tipenya apakah vokasi atau akademik, hingga levelnya: Diploma (D1,D2,D3, Sarjana Terapan), Sarjana (S1), S2 hingga Doktoral. Di Indonesia sendiri aturan hukumnya sudah jelas di mana letak/posisi jenjang pendidikan tersebut, yakni:

  • Peraturan Presiden (Perpres) Nomor 8 Tahun 2012 tentang Kerangka Kualifikasi Nasional Indonesia (KKNI), dan
  • Peraturan Menteri Pendidikan dan Kebudayaan (Permendikbud) Nomor 3 Tahun 2020 tentang Standar Nasional Pendidikan Tinggi (SNPT).

Tanggung jawab unit pengelola sangat berat, tidak boleh melanggar aturan tersebut. Beberapa kampus negeri, misalnya ITS bahkan mempublish masalah tersebut (lihat link berikut).

Sampai-sampai ditulis ‘bukan sekedar berdasarkan persepsi individu’. Sepertinya banyak dosen-dosen yang memberi beban yang tidak/kurang tepat ke mahasiswanya. Biasanya memaksa siswa S1 melakukan riset dengan beberapa research question dengan harapan ada novelty, padahal standar minimal KKNI Sarjana adalah cukup bisa mengaplikasikan IPTEKS, menguasai teori, dan seterusnya. Walaupun boleh saja melebihi standar minimum, asalkan tidak memaksa khawatir melanggar UU. Kampus sekelas ITS saja masih menggunakan standar minimal.

Eksperimen

Untuk mahasiswa informatika, banyak sekali bahan eksperimen karena bisa menggunakan laptop. Kalaupun server, bisa juga di-remote, tidak perlu datang ke lokasi. Bahan eksperimen sangat banyak, dengan modul-modul untuk memahami konsep atau metode. Biasanya masuk dalam kurikulum yang diajarkan dalam laboratorium. Beberapa bahasa pemrograman, misalnya Python menyediakan IDE yang praktis, yaitu Google Colab. Biasanya dipakai untuk proses training, atau menguji dan membandingkan metode-metode tertentu, oleh mahasiswa doktoral untuk menguji metode usulan atau memperbaiki/meng-improve metode yang ada. Dalam perkuliahan S1 biasanya untuk eksperimen dimana suatu metode mampu menyelesaikan masalah.

Jika mahasiswa S1 hanya fokus ke Google Colab, dikhawatirkan kurang memahami standar minimal (menerapkan, menguasai teori, dll) di mana di dunia kerja yang dibutuhkan adalah menerapkan, misalnya membuat web, android, instalasi server, network, memantau security, dan sejenisnya. Kalaupun mau mengikuti standar S2 pun harus mampu mengembangkan. Jangan sampai ingin mengikuti standar S2 tetapi tidak ada yang dikembangkan, hanya memakai, tetapi masih berupa eksperimen di Google Colab, seperti tugas Lab. Akibatnya level S1 bukan .. S2 juga bukan. Termasuk keharusan menghasilkan pengakuan nasional dan internasional lewat jurnal pun agak berat bagi mahasiswa S1, kecuali mungkin jurnal nasional yang membolehkan tidak ada novelty.

Implementasi

Google colab sejatinya sangat bermanfaat, misal kita akan membuat mesin penerjemah sendiri, kita coba dengan google colab dan ternyata berhasil jalan dengan baik. Nah selanjutnya tugas mahasiswa S1 ya mengimplementasikan mesin penerjemah itu dalam suatu aplikasi misalnya web, android, ios, dan sejenisnya. Tapi kan susah? Tidak juga, sekarang kan sumber info sudah banyak, berikut video bagaimana mengutak-atik agar suatu metode bisa diimplementasikan.

Khusus aplikasi web, video short berikut yang merupakan kelanjutan video sebelumya mungkin bisa menginspirasi Anda. Terima kasih.

Mudahnya Membandingkan Metode LVQ, Naïve Bayes, SVM, dan Random Forest

Saat ini metode-metode machine learning sepertinya sudah established sehingga pengguna tinggal memilih metode apa yang cocok. Beberapa jurnal juga sudah menyediakan laporan tentang kinerja metode-metode yang ada termasuk bagaimana meng-improve nya.

Kalau dulu kita harus membuat kode, menyiapkan data latih, validasi, dan testing, sekarang data sudah tersedia, misal daya IRIS pada Python. Bagaimana dengan metode? Seperti postingan yang lalu, kita bisa gunakan Chat GPT.

A. LVQ

Linear Vector Quantization (LVQ) adalah salah satu jenis jaringan saraf buatan yang digunakan untuk klasifikasi. LVQ digunakan untuk mengklasifikasikan suatu data ke dalam kategori yang telah ditentukan sebelumnya. Masukan kata kunci: “bagaimana membuat lvq dengan contoh data iris python?”.

Kopi kode dengan mengklik pojok kanan atas. Lalu paste di Visual Studio Code (saya sarankan menggunakan editor praktis dan gratis ini).

Jika ada pesan No Module … berarti harus instal library dengan PIP. Lihat google bagaimana menginstal library tersebut. Setelah selesai, run visual studio code Anda. Oiya, instal dulu Python di visual studio code, buka terminal dan lihat hasil runnya.

Akurasi LVQ untuk dataset IRIS ternyata 86.67%. Berikutnya kita coba Naïve Bayes.

B. Naïve Bayes

Masukan kata kunci: “bagaimana klasifikasi naive bayes data iris python?” seperti sebelumnya, dengan mengganti LVQ dengan Naïve Bayes.

Algoritma Naive Bayes bekerja dengan menghitung probabilitas kelas target dari suatu data berdasarkan probabilitas masing-masing fitur yang terdapat pada data tersebut. Algoritma ini memiliki tiga jenis dasar yaitu Naive Bayes Gaussian (untuk data yang berdistribusi normal), Naive Bayes Multinomial (untuk data yang terdiri dari frekuensi hitung), dan Naive Bayes Bernoulli (untuk data biner).

Dengan cara yang sama, copas kode masukan ke Visual Studio Code, jalankan dan ternyata diperoleh akurasi di atas LVQ, yakni 96.67%.

C. Support Vector Machine (SVM)

SVM sangat terkenal karena keampuhannya, namun kurang disukai karena proses yang lambat. Support Vector Machine (SVM) adalah salah satu algoritma pembelajaran mesin yang digunakan untuk klasifikasi dan regresi. SVM bekerja dengan membuat sebuah hyperplane (bidang pemisah) yang dapat membedakan antara kelas-kelas data pada sebuah ruang fitur (feature space).

SVM bertujuan untuk mencari hyperplane yang optimal, yaitu hyperplane yang memberikan margin terbesar (jarak terbesar antara hyperplane dan data dari setiap kelas) antara kelas-kelas data. Margin adalah jarak antara dua hyperplane yang sejajar dan melewati data terdekat dari masing-masing kelas. Dalam hal ini, SVM mengambil data yang berada di dekat hyperplane untuk membuat keputusan kelas.

Ternyata akurasinya cukup ampuh, 100%. Jauh di atas Naïve Bayes, apalagi LVQ.

D. Random Forest (RF)

Ada satu model machine learning klasik yaitu Random Forest (RF) yang cukup terkenal. Random Forest (hutan acak) adalah salah satu algoritma pembelajaran mesin yang populer untuk masalah klasifikasi dan regresi. Algoritma ini menggabungkan konsep dari dua teknik pembelajaran mesin, yaitu pohon keputusan (decision tree) dan teknik bootstrap aggregating atau bagging.

Dalam algoritma Random Forest, beberapa pohon keputusan dibangun secara acak dengan menggunakan subset acak dari fitur-fitur dataset. Hal ini dilakukan untuk menghindari overfitting, yang dapat terjadi ketika sebuah pohon keputusan dibangun pada semua fitur.

Metode ini ternyata cukup akurat, sama dengan SVM, 100% akurat.

Bagaimana untuk publikasi jurnal? Tentu saja saat ini jurnal membutuhkan novelty atau kontribusi. Jika tulisan ini akan dipublish di jurnal internasional, pasti ditolak karena tidak ada kebaruan baik dari metode, maupun dataset implementasi.

Improve Metode vs Domain Implementation

Bagi peneliti ilmu komputer biasanya menemukan metode yang lebih baik dari yang ada sekarang, baik dengan murni baru atau hybrid/penggabungan dengan metode yang ada agar dihasilkan metode baru yang lebih cepat dan akurat.

Terkadang bidang tertentu, seperti kedokteran, SIG, keuangan dan lain-lain dapat menerapkan metode yang telah ada. Hal ini terkadang dianggap kontribusi, terutama pada bidang-bidang yang memang jarang disentuh Machine Learning.

Ditolak atau tidaknya naskah terkadang dilihat dari hal tersebut, jika fokus ke perbaikan metode, maka jika tidak ada model usulan, pasti ditolak. Tapi jika fokus ke domain implementation, jika pada pembahasan hanya membahas akurasi model maka dipastikan naskah tidak tepat, karena seharusnya pembahasan fokus ke domain implementation (impak terhadap domain baik dari sisi sistem atau kebijakan). Sekian semoga bermanfaat.

Belajar dengan Mudah Lewat Chat GPT

Bagi para dosen dan guru pasti pernah merasakan adanya perubahan dalam proses belajar mengajar. Kalau dulu pengajar menjadi pusat/central dari ilmu pengetahuan, saat ini sudah tidak lagi. Banyak media yang menjadi rujukan, bahkan dengan kualitas yang lebih baik. Tinggal searching di Google, jawaban tersedia. Apakah peran guru dan dosen tergantikan? Ternyata peran sebagai role model, sumber inspirasi, motivator, dan aspek lain yang tidak dapat digantikan dengan mesin masih dibutuhkan.

Chat GPT merupakan salah satu sumber belajar besutan Microsoft yang siap bertarung dengan Google yang merajai mesin pencarian. Chat GPT berfungsi layaknya guru, teman belajar, atau sejenisnya sehingga terkesan mirip berkomunikasi dengan manusia. Caranya mudah, akses saja situs resminya: https://chat.openai.com/. Lakukan sign up dengan dua pilihan, daftar atau sign up with email, pilihan favorit saya adalah with Google Email. Setelah diminta mengisi nama dan memasukan nomor telepon untuk dikirimi kode (lewat Whatsapp jika punya atau SMS) kita tinggal try saja.

Misal kita akan belajar bagaimana mengkoneksikan python dengan database mysql kita. Ketik saja di kolom chating dengan kalimat manusiawi, “Bagaimana menghubungkan python dengan database mysql?”. Jawaban langsung mengalir.

Ternyata kode program juga ditampilkan sehingga kita bisa langsung copas. Chat GPT juga bisa jadi rekan virtual kita untuk memilih metode apa yang kita gunakan, misalnya berkaitan dengan kasus contoh di atas, yaitu mengakses Mysql dengan python.

Nah, jelas kan? Di sini yang saya gunakan adalah SQL Alchemy karena berkonsep Object Relational Mapping (ORM), khususnya yang menggunakan PHP yang terintegrasi dengan Python, berbeda dengan Django yang memang basisnya murni Python.

Oiya, untuk anak-anak kita bisa juga kok menanyakan apapun, yang berkaitan dengan pelajaran ke Chat GPT, selamat belajar ya.

Transfer Learning

Salah satu tugas machine learning adalah proses training. Proses ini memerlukan sumber daya yang besar. Selain itu diperlukan pula data yang banyak dari ribuan hingga jutaan. Nah, untuk menghemat biasanya digunakan proses transfer learning.

Di sini transfer yang dimaksud adalah menggunakan model deep learning yang telah dilatih oleh pihak lain untuk kita latih dengan pengetahuan yang baru sesuai dengan bidang khusus tertentu. Model yang dilatih oleh pihak lain dikenal dengan istilah pretrained model. Banyak vendor yang menyediakan pretrained, salah satunya adalah tensorflow.

Prinsip kerjanya adalah model pretrained dengan kemampuan mengklasifikasi 1000 kelas misalnya, jika kita akan menambahkan 10 kelas baru, maka cukup mengganti beberapa layer bagian luar dari 1000 kelas menjadi 10 kelas selanjutnya dilatih dengan data 10 kelas tersebut. Sebelumnya layer yang sudah dilatih oleh pretrained dibekukan (freeze).

Misal ada model pretrained yang bisa membedakan benda-benda tertentu seperti meja, kursi, piring, dan gelas. Jika kita diminta membedakan gelas tertentu seperti cangkir, gelas anggur, gelas antik, dan lain-lain, kita tinggal melatih ulang model pretrained dengan kelas gelas yang baru dan model bisa membedakan meja, kursi, pring, dan gelas-gelas tertentu. Berikut video bagaimana menggunakan transfer learning dengan MATLAB dan Python.

To keep running when the data is empty in Python

Machine learning is a method that involves methods with datasets. Sometimes when the dataset to be processed is empty an error will appear as below.

Several ways can be taken, but the easiest way is to check the size of the csv file. If the file size is zero Kb then it is confirmed that there is no content. Then just use the ‘if not’ instruction as sample below.


Here, the ‘os’ library is required. Don’t forget to indent the ‘if’, including the ‘else:’ side.

Stopwords Removal Bhs Indonesia – via Sastrawi

Dalam text processing, selain menghilangkan karakter-karakter non bahasa seperti hashtag, website symbols, dan lain-lain, perlu juga menghilangkan stopwords yang merupakan kata yang kurang bermakna untuk diproses karena hampir di setiap berkas ada, misalnya ‘dan’,’atau’, ‘untuk’, dan lain-lain. Bayangkan misalnya kita searching di Google dengan kata kunci ‘A dan B’ maka kata ‘dan’ tentu saja tidak perlu di-searching karena hampir semua dokumen ada kata itu.

Natural Language Processing (NLP) merupakan bidang ilmu komputer yang fokus ke bahasa, sehingga mau tidak mau antara satu bahasa dengan bahasa lain pasti berbeda. Untuk bahasa Inggris, Natural Language Toolkit (NLTK) pada library Scikit Learn sudah lama ada, sementara untuk bahasa Indonesia, tersedia library Sastrawi yang dapat digunakan untuk menghilangkan Stopwords, selain tentu saja untuk Stemming dalam menghilangkan imbuhan (awalan, sampiran dan akhiran). Lebih lengkapnya dapat dilihat pada video berikut.

Dokumentasi dengan MkDocs

Dalam mata kuliah Interaksi Manusia dan Komputer (Human Computer Interraction) ada satu bab tentang dokumentasi help. Salah satu dokumentasi penting adalah dokumentasi online yang menjelaskan suatu aplikasi yang dibuat. Kalau jaman dulu mungkin berupa berkas readme atau file pdf tata cara penggunaan. Namun saat dunia online seperti saat ini, mau tidak mau kemampuan mendokumentasi online mutlak diperlukan. Sayang kan kalau harus bayar ke orang untuk publish onlinenya. Server online pun banyak yang gratis kalo hanya untuk dokumen, misalnya yang terkenal Github.io (lihat post yg lalu).

Banyak aplikasi untuk membuat dokumentasi online misalnya document360, nuclino, Github, MarkdownPad, ProProfs, Read the Docs, Doxygen, dan lain-lain. Nah, postingan ini akan membahas MkDocs, sebuah alat membuat dokumentasi online berbasis Python.

MkDocs memiliki keunggulan, yakni cepat dan gratis. Salah satu problem utama adalah untuk yang belum pernah menggunakan Python, karena harus belajar sedikit. Kalau sudah pernah dengan mudah dapat menjalankannya. Alur untuk pembuatan dokumentasi online dengan MkDocs adalah:

  • Instal MkDocs
  • Mengunduh Template
  • Mengedit mkdocs.yml dengan editor
  • Mengedit index.md dengan editor
  • Menjalankan server lokal MkDocs
  • Mendeploy hasil edit
  • Mempublish online

Lumayan panjang, tapi tidak membutuhkan sumber daya yang besar. Semua dapat dibuka dengan cepat. Sedikit butuh kreativitas ketika mengedit mkdocs.yml dan index.md. Karena ketika kita menjalankan server MkDocs kita langsung melihat perubahannya, jadi mirip mengkustomasi wordpress misalnya.

Ada sedikit rancu bagi pengguna awal, di sini mkdocs server (dengan mengetik mkdocs serve) hanya berfungsi melihat hasil editan saja, kalau ingin publish misal di XAMPP perlu mendeploy lewat fungsi mkdocs gh-deploy yang akan menghasilkan folder yang siap diupload di folder docs.

Untuk jelasnya lihat video berikut ini. Sekian, semoga bermanfaat.

KMeans Clustering dengan Python

Pada postingan yang lalu telah dibahas klasterisasi dengan KMeans menggunakan bahasa Matlab. Kali ini kita coba menggunakan bahasa Python dengan GUI Jupyter notebook pada Google (Google Colab).

Sebelumnya kita siapkan terlebih dahulu file data sebagai berikut. Kemudian buka Google Colab untuk mengklasterisasi file tersebut. Sebagai referensi, silahkan kunjungi situs ini. Saat ini kita dengan mudah memperoleh contoh kode program dengan metode tertentu lewat google dengan kata kunci: colab <metode>.

Mengimpor Library

Library utama adalah Sklearn dengan alat bantu Pandas untuk pengelolaan ekspor dan impor file serta matplotlib untuk pembuatan grafik.

  • from sklearn.cluster import KMeans
  • import pandas as pd
  • from sklearn.preprocessing import MinMaxScaler
  • from matplotlib import pyplot as plt

Perhatikan di sini KMeans harus ditulis dengan K dan M berhuruf besar, begitu pula kelas-kelas yang lain seperti MinMaxScaler

Menarik Data

Perhatikan data harus diletakan di bagian file agar bisa ditarik lewat instruksi di bawah ini. Jika tidak maka akan muncul pesan error dimana data ‘beasiswa.csv’ tidak ada.

Selain itu tambahkan instruksi untuk mengeplot data. Tentu saja ini khusus data yang kurang dari 3 dimensi. Jika lebih maka cukup instruksi di atas saj.

  • plt.scatter(df[‘IPK’],df[‘Tingkat Kemiskinan (TM)’])
  • plt.xlabel(‘IPK’)
  • plt.ylabel(‘Tingkat Miskin’)

Prediksi

Ini merupakan langkah utama yang memanfaatkan pustaka ‘KMeans’ dari Sklearn.

  • km=KMeans(n_clusters=2)
  • y_predicted=km.fit_predict(df[[‘IPK’,‘Tingkat Kemiskinan (TM)’]])
  • y_predicted

Nah, hal terpenting adalah tidak hanya menghitung y_predicted saja melainkan melabel kembali datanya. Percuma saja jika kita tidak mampu memetakan kembali siapa saja yang masuk kategori klaster ‘0’ dan ‘1’.

  • df[‘klaster’]=y_predicted
  • print(df)

Finishing

Di sini langkah terpenting lainnya adalah kembali memvisualisasikan dalam bentuk grafik dan menyimpan hasilnya dalam format CSV.

  • df1=df[df.klaster==0]
  • df2=df[df.klaster==1]
  • plt.scatter(df1[‘IPK’],df1[‘Tingkat Kemiskinan (TM)’],color=‘red’)
  • plt.scatter(df2[‘IPK’],df2[‘Tingkat Kemiskinan (TM)’],color=‘black’)
  • plt.scatter(km.cluster_centers_[:,0],km.cluster_centers_[:,1],color=‘purple’,marker=‘*’,label=‘center’)
  • plt.xlabel=‘IPK’
  • plt.ylabel=‘Tingkat Miskin’
  • plt.legend()

Hasilnya adalah grafik dengan pola warna yang berbeda tiap klaster-nya.

Salah satu kelebihan Pandas adalah dalam ekspor dan impor data. Dalam hal ini kita akan menyimpan hasil klasterisasi dengan nama ‘klasterisasi.csv’. Lihat panduan lengkapnya di sini.

  • df.to_csv(‘klasterisasi.csv’)

Silahkan file hasil sempan diunduh karena Google Colab hanya menyimpan file tersebut sementara, kecuali kalau Anda menggunakan Google Drive (lihat caranya). Untuk mengujinya kita buat satu sel baru dan coba panggil kembali file ‘klasterisasi.csv’ yang baru terbentuk itu. df=pd.read_csv(‘klasterisasi.csv’)

  • df.head()

 

Note: ada field yang belum dinamai (Unnamed), bantu ya di kolom komentar caranya. Oiya, MinMaxScaler digunakan untuk jika data ‘jomplang’ misalnya satu dimensi, IPK dari 0 sampai 4 sementara misalnya penghasilan jutaan, tentu saja KMeans ‘pusing’. Oleh karena itu perlu dilakukan proses preprocessing. Sekian, semoga bermanfaat.

Permasalahan Pada Google Colab

Salah satu tools untuk pemrograman dengan Python yang terkenal saat ini adalah Google Colab. Tools ini sangat praktis karena cukup dengan sebuah browser dengan disertai akun Google sudah bisa menjalankan kode dalam bahasa Python yang berat. Bahkan Google colab juga menyediakan hardwarenya yang berupa Graphic Processing Unit (GPU) dan Tensor Processing Unit (TPU).

Dalam praktiknya ternyata banyak kendala-kendala yang kerap dialami peneliti dalam memanfaatkan fasilitas canggih milik Google tersebut. Beberapa masalah akan dibahas dalam postingan ini, tentu saja berdasarkan pengalaman yang terjadi. Mungkin banyak hal lain yang tidak dibahas dalam postingan ini yang butuh share juga dari pembaca lewat kolom komentar. Selain membahas masalah-masalah yang muncul, dibahas pula cara-cara penyelesaiannya.

Kompatibilitas

Banyak kode-kode yang dishare di internet dalam bentuk Google Colab ketika dijalankan tidak bisa/error. Hal ini kerap terjadi karena Google Colab sudah mengupdate ke versi terbaru dan tidak bisa lagi menjalankan versi-versi yang lama. Langkah terbaik untuk penyelesaiannya adalah mengembalikan Google Colab ke versi sebelumnya.

Ternsor Flow

Beberapa aplikasi terkadang masih menggunakan tensorflow versi 1.x yang lama, sedangkan Google Colab saat ini sudah menggunakan yang versi 2. Oleh karena itu perlu sebuah instruksi untuk mengembalikan ke versi tersorflow yang lam.

Simbol “%” biasanya digunakan untuk setting library pada Google Colab. Memang ada baiknya mengkonversi program Python kita dengan versi yang terbaru, namun ada kalanya karena keterbatasan waktu, cara tersebut layak untuk dipertimbangkan.

TIdak Semua Library Tersedia

Beberapa library seperti NumPy, Pandas, dan sejenisnya sudah disiapkan oleh Google Colab. Namun library tertentu yang jarang dipakai perlu dipasang pada Google Colab. Caranya tentu saja tidak bisa dengan cara konvensional pada command prompt dengan “PIP”, melainkan dengan running pada Cell Google Colab lewat tanda “!” di awal.

Sebagai contoh di atas adalah library “rasterio” yang sering digunakan untuk menampilkan network Deep Learning berupa gambar yang jelas. Namun yang menjengkelkan adalah ketika Google Colab dishutdown dan dihidupkan kembali, kita harus menginstal ulang, berbeda jika menggunakan Jupyter Notebook yang cukup sekali menginstall Library.

Perlu Mencabut Instalasi Library

Ternyata bukan masalah belum terinstal saja yang muncul, sudah diinstal pun terkadang perlu dicabut karena tidak sesuai dengan kondisi sebelumnya. Misalnya ketika dahulu kita men-training dengan library tertentu pada Deeplearning, ketika hasil training tersebut akan digunakan ternyata tidak kompatibel dengan library terkini, alhasil perlu dilakukan proses training ulang yang terkadang memakan waktu.

Cara paling gampang adalah mencabut library Google Colab terkini dilanjutkan dengan instal versi sebelumnya yang tepat ketika proses training berlangsung.

Sebelumnya akan ada proses konfirmasi apakah akan dicabut library terkininya? Ketik saja y dan proses uninstall akan berjalan. Lanjutkan dengan menginstall versi yang kompatibel dengan yang lampau agar hasil pelatihan dapat berjalan.

Kode di atas terjadi ketika Deeplearning dilatih, versi h5py menggunakan versi yang lama. Alhasil dengan versiyang baru tidak dapat dipanggil dan dikompilasi dengan networknya. Setelah uninstall dan diinstal dengan versi yang cocok, barulah dapat dimanfaatkan hasil pelatihan/training Deeplearning yang telah dilakukan dahulu.

File Terhapus Ketika Shutdown

Problem yang sering terjadi adalah ketika suatu file diupload di Google Colab maka file tersebut sejatinya adalah sementara. Artinya ketika Google Colab ditutup maka file tersebut otomatis hilang. Untungnya Google Colab menyediakan fasilitas terkoneksi ke Google Drive, sehingga fila akan tersimpan permanen di Google Drive. Hanya saja perlu setting tambahan seperti berikut ini.

Google Colab akan meminta kode tertentu (cukup dengan copas) dari Google Drive. Pastikan folder di Google Drive dapat diakses pada Google Colab. Kalau hanya berukuran beberapa kilobyte sih tidak masalah, repotnya jika filenya berukuran besar mendekati 1 Gb, tentu saja menjengkelkan. Jadi melakukan akses ke Google Drive wajib dilakukan.

Waktu Akses Terbatas

Jika proses memerlukan waktu yang lama, maka Google akan memutus proses itu, dalam waktu 1×24 jam (mirip pesan pak RT untuk para tamu). Selain itu terkadang jika Google melihat tidak ada aktivitas pada sesi Google Colab terkadang akan direset prosesnya.

Butuh Koneksi Internet

Tentu saja karena Google Colab menggunakan browser. Ada baiknya Anda menggunakan Jupyter Notebook karena lebih fleksibel. Ketika kode bisa dirunning, akan terus bisa dirunning, kecuali Versi Library Anda rubah.

Hal-hal di atas merupakan permasalahan yang harus dipahami oleh pengguna Google Colab. Mungkin banyak hal-hal lain yang belum disebutkan di atas. Oiya, untuk pemrograman hal-hal rahasia, sensitif, dan sejenisnya ada baiknya tidak menggunakan fasilitas cloud seperti Google Colab.