Membuat Objek dengan PHP

Biasanya materi pemrograman berorientasi objek (PBO) menggunakan Java. Namun saat ini sebagian besar bahasa pemrograman memiliki kemampuan membuat program berorientasi objek, salah satunya adalah PHP. Walaupun tren bahasa ini menurun di dunia, kalah dengan Python, tetapi di Indonesia masih banyak digunakan.

Untuk basis data, penggunaan basis data khusus Objek masih sedikit yang berminat mengingat basis data relasional sudah digunakan sejak lama. Namun dapat diatasi dengan penggunaan konsep Object Relational Data Base Management System (ORDBMS). Kalau basis data objek menyimpan objek mobil misalnya, ORDBMS menyimpan mobil dalam bentuk roda, mesin, sasis dan elemen lainnya.

Class

Salah satu syarat wajib PBO adalah adanya class. Fungsinya membuat sebuah objek sejenis sebagai templatenya, berisi atribut dan method atau operation. Berikut ini contoh diagram kelas untuk kelas barang.

Tiap class juga memiliki sebuah method yang bernama constructor yang fungsinya membangkitkan sebuah objek. Berikut ini class Barang dalam bahasa PHP. Note: karena bahasa PHP, jangan lupa mengawali dengan tag: <?php

Potongan kode di atas menunjukan fungsi constructor yang menginisiasi database relational. Di bagian bawahnya ada method insert yang berfungsi memasukan data barang, di bawahnya update dan seterusnya, sering disebut dengan istilah Create, Read, Update, dan Delete (CRUD). Sebelumnya siapkan saja database MySql.

Objek

Jika kelas yang diibaratkan template sudah ada, sebuah objek dapat dibentuk. Jadi prinsipnya ketika ingin mengakses CRUD, aplikasi tidak langsung terhubung ke database, melainkan membentuk objek terlebih dahulu.

Pertama-tama impor kelas yang dibutuhkan dengan include ‘Barang.php’; yang sesuaikan dengan letak/path-nya. Sebaiknya dibuatkan dalam satu folder khusus, misalnya classes. Perhatikan bagaimana membuat sebuah objek barang. Standar-nya nama objek diawali huruf kecil, sementara nama kelas huruf besar. Di sini $ merupakan standar bahasa PHP sebagai variabel.

$barang = new Barang();

Ketika sudah terbentuk objek dari kelasnya (class Barang) maka kita dapat mengakses method yang dimiliki misalnya read, di sini contohnya membaca id_barang=1, yang jika dijalankan aplikasinya tampak seperti gambar di bawah. Sekian, mudah-mudahan tertarik dengan sistem berorientasi objek.

Iklan

Tag Cloud dengan HTML

Tag cloud atau awan tag adalah representasi visual dari kata-kata kunci atau tag yang paling umum digunakan dalam suatu dokumen atau set dokumen. Tag cloud biasanya terdiri dari sekelompok kata-kata yang ditampilkan dalam ukuran yang berbeda-beda, dengan ukuran yang lebih besar menunjukkan bahwa kata-kata tersebut lebih sering muncul dalam dokumen atau set dokumen yang dianalisis. Tag cloud digunakan untuk membantu pengguna memperoleh pemahaman yang lebih cepat tentang topik atau konten dokumen yang dianalisis.

Berikut ini kita coba membuat tagcloud dari scrapping www.newsapi.org yang merupakan platform penyedia layanan berita berbasis web (lihat pos terdahulu). Layanan ini menyediakan akses ke ribuan artikel berita dari berbagai sumber terpercaya di seluruh dunia. NewsAPI.org adalah salah satu layanan terbaik untuk pengembang dan pembuat aplikasi yang ingin mengintegrasikan berita ke dalam aplikasi mereka. Berikut ini adalah contoh akses API:

https://newsapi.org/v2/top-headlines?country=id&apiKey=APIKEY

Untuk mendapatkan API Key dari NewsAPI.org, ikuti langkah-langkah berikut:

  • Kunjungi situs web NewsAPI.org di https://newsapi.org/.
  • Klik tombol “Get API Key” di sudut kanan atas halaman web.
  • Isi formulir pendaftaran yang tersedia dengan alamat email Anda dan kata sandi yang aman, kemudian klik “Get Started”.
  • Verifikasi alamat email Anda dengan mengklik tautan yang dikirimkan ke email Anda.
  • Login ke akun NewsAPI.org yang baru saja Anda buat.
  • Setelah login, klik “Dashboard” untuk melihat API Key Anda.
  • Salin API Key yang ditampilkan dan gunakan dalam permintaan API Anda.

Perlu diingat bahwa NewsAPI.org menyediakan berbagai paket layanan dengan harga yang berbeda-beda. Paket gratis memiliki batasan permintaan API per hari, sedangkan pada paket berbayar, batasan permintaan dan fitur yang lebih banyak tersedia. Pastikan untuk memilih paket yang sesuai dengan kebutuhan Anda. Berikut ini terapannya untuk membuat Tagcloud.

<!DOCTYPE html>
<html>
<head>
<title>Tag Cloud dari Scraping NewsAPI</title>
</head>
<body>
<h1>Tag Cloud dari Scraping NewsAPI</h1>
<?php
$apiUrl = “https://newsapi.org/v2/top-headlines?country=id&apiKey=API KEY“; // Ubah kode “id” menjadi kode negara yang ingin Anda scrap beritanya
$response = file_get_contents($apiUrl); // Ambil data dari NewsAPI dalam format JSON
$newsData = json_decode($response); // Ubah data JSON menjadi objek PHP
$tags = array(); // Buat array kosong untuk menyimpan tag yang diambil dari berita
foreach ($newsData->articles as $article) { // Loop setiap artikel dalam objek berita
$title = strtolower($article->title); // Ambil judul artikel dan ubah ke huruf kecil
$words = explode(” “, $title); // Pisahkan kata-kata dalam judul artikel ke dalam array
foreach ($words as $word) { // Loop setiap kata dalam array
if (strlen($word) > 3) { // Jika kata lebih panjang dari 3 karakter
array_push($tags, $word); // Tambahkan kata ke dalam array tag
}
}
}
$tagCounts = array_count_values($tags); // Hitung frekuensi kemunculan setiap tag
arsort($tagCounts); // Urutkan tag berdasarkan frekuensi kemunculan dari yang paling banyak
foreach ($tagCounts as $tag => $count) { // Loop setiap tag dan frekuensi kemunculannya
$tagSize = 15 + ($count * 4); // Tentukan ukuran tag berdasarkan frekuensi kemunculan
echo “<a href=’#’ style=’font-size: ” . $tagSize . “px;’>$tag</a> “; // Tampilkan tag dalam elemen anchor dengan ukuran yang ditentukan
}
?>
</body>
</html>
Tampilannya kira-kira seperti ini. Tampak Piala Dunia Indonesia U-20 memiliki frekuensi yang tertinggi di antara kata-kata lainnya. Selamat mencoba.

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:

 

 

Install Apache-2 dan PHP-MyAdmin di Ubuntu

Mahasiswa sebaiknya memahami Ubuntu, karena sebagian besar server menggunakan Ubuntu. Nah, untuk belajar, bisa juga dengan Ubuntu desktop karena fungsi-fungsi terminalnya mirip, namun lebih mudah utk newbie karena bisa baca pdf, transfer file dengan cara drag dan lain-lain.

Jalankan VMWare Workstation dan Ubuntu. Masuk ke terminal untuk menjalankan instruksi-instruksi yang dibutuhkan. Tekan simbol 9 titik di pojok kiri bawah, lalu cari Terminal >_.

A. INSTAL APACHE 2

Setelah terminal muncul di layar. Lakukan langkah-langkah berikut untuk instalasi Apache2:

1. Masuk ke root dengan mengetik:

sudo su

Masukan password root Ubuntu kta. Perhatikan simbol # yang menggantikan $ pertanda kita sudah masuk ke root.

2. Lakukan update dengan mengetik:

apt update

Tunggu beberapa saat hingga selesai.

3. Install Apache 2 dengan mengetik:

apt install apache2

Saat kita diminta konfirmasi apakah lanjut (karena akan mengambil memory harddisk), tekan y dilanjutkan dengan ENTER.

4. Selamat, Apache2 telah berhasil diinstall, pastikan dengan mengetik:

apache2 -version


B. SETING FIREWALL APACHE2

Agar webserver Apache dapat diakses dari luar, Firewall perlu diseting dengan langkah sebagai berikut:

1. Untuk mengetahui apa saja aplikasi yang aktif Firewall-nya ketik: ufw app list. Selanjutnya ijinkan Apache diakses dari luar dengan mengetik:

ufw allow apache2

Cek dengan mengetik: ufw status, dan pastikan Status: inactive.

2. Restart Apache2 dengan mengetik:

systemctl restart apache2

Untuk melihat status Apache2, ketik:

Systemctl status apache2

Pastikan Apache aktif dengan melihat tulisan ‘active (running)’.

NOTE: tiap selesai melihat status, untuk kembali ke prompt tekan Ctrl+C dilanjutkan menekan ENTER.


3. Berikutnya kita akan menguji apakah Apache2 yang telah kita instal dapat diakses dari device lain. Ketahui terlebih dahulu ip address-nya dengan mengetik:

ip a

Baca ip address-nya, misalnya untuk data berikut ip-nya: 192.168.72.128.


4. Selanjutnya buka device lain, misalnya Windows yang menjadi HOST VMWare. Buka browser dan ketik alamat ip-nya, misal 192.168.72.128. Pastikan muncul tampilan sebagai berikut.


Jika tampil dan terlihat tulisan ‘It works’, selamat kita berhasil menginstal Apache2. Jika tidak muncul pastikan kembali alamat ip addressnya apakah sudah sesuai.

C. INSTALL PHP

1. Web server yang sudah kita instal dan seting, perlu disiapkan bahasa pemrogramannya, antara lain php. Ketik terlebih dahulu untuk update:

apt update

2. Instal php dengan mengetik:

apt install php

Tekan y ketika diminta konfirmasi. Tunggu sesaat hingga proses instalasi selesai. Jika sudah cek dengan mengetik:

php -v

Pastikan versi php muncul di terminal.

3. Berikutnya menginstal library dari paket php dengan mengetik:

apt install libapache2-mod-php

Kembali restart apache2

systemctl restart apache2

D. INSTALL MYSQL

1. Seperti biasa, update:

apt update

2. Instal MySQL dengan mengetik:

apt install mysql-server

Tekan y ketika kita diminta konfirmasi karena dibutuhkan 200 Mb untuk MySQL Server yang akan dipasang.

3. Cek status MySQL dengan mengetik:

systemctl status mysql

E. INSTALL PHPMYADMIN

1. Update terlebih dahulu:

apt update

2. Instal Phpmyadmin dengan mengetik:

apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl

3. Gunakan SPASI dan TAB untuk menceklis [ ] apache2 dan menekan <Ok>.


  1. Tnggu beberapa saat hingga muncul Package configuration. Pilih <Yes>.
  2. Ketik password untuk pypmyadmin, misal: P4ssword!

F. MENGAMANKAN MYSQL

1. Set dulu passwore ‘root’@’localhost’. Ketik mysql untuk masuk ke MySQL Gunakan kode berikut untuk memberi password root: P4ssword!

ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘P4ssword!’;

2. Keluar dari MySQL dengan mengetik: exit. Untuk membuat MySQL secure, ketik:

mysql_secure_installation

3. Tekan y ketika diminta konfirmasi. Lalu pilih level password policy yang diinginkan, misalnya STRONG.

4. Jika ingin mengganti password, tekan y.

5. Tekan y hingga selesai (muncul pesan All Done).

6. Restart MySQL dengan mengetik: systemctl restart mysql dilanjutkan dengan mengecek status dengan mengetik: systemctl status mysql. Pastikan status: Active (Running).

7. Akses phpmyadmin dengan browser dari device lain. Pastikan berjalan dengan baik.


Berikut ini beberapa catatan ketika ada kendala instalasi Phpmyadmin.

1. Jika terkendala dengan instalasi, set dahulu policy ke low, masuk ke MySQL

mysql -u root -p

2. masukan password, misal di sini: P4ssword! Terkadang instalasi bermasalah karena password yang kurang ‘strong’. Turunkan security menjadi LOW dahulu:

SET GLOBAL validate_password.policy = 0;

3. Uninstall komponen validasi password:

UNINSTALL COMPONENT ‘file://component_validate_password’;

4. Setelah instal Phpmyadmin lanjutkan dengan instal validasi:

INSTALL COMPONENT ‘file://component_validate_password’;

5. Set validasi password menjadi STRONG:

SET GLOBAL validate_password.policy = STRONG;

6. Cek sekurity:

SHOW VARIABLES LIKE ‘validate_password%’;

7. Pastikan sekurity STRONG.

Menginstall Composer Untuk Aplikasi-Aplikasi Framework PHP

Postingan yang lalu membahas menjalankan aplikasi yang telah dibuat dengan framework Laravel. Diperlukan aplikasi Composer yaitu sebuah tool dependency manager untuk bahasa pemrograman PHP. Dengan menggunakan Composer, kita dapat mengelola dan mengatur dependensi (library atau package) yang diperlukan oleh sebuah proyek PHP.

Secara lebih spesifik, Composer memungkinkan kita untuk:

  • Menginstal dan mengupdate library atau package PHP dengan mudah.
  • Mengelola versi dari library atau package yang digunakan pada proyek kita.
  • Menyediakan autoload sehingga kita tidak perlu lagi melakukan require manual pada setiap file.

Silahkan buka situs resminya, lalu download Composer-Setup.exe. Setelah itu jalankan saja.

Pilih saja install for all users untuk mudahnya.

Di sini kita diminta mengarahkan letak file php.exe yang kita gunakan.

Untuk XAMPP biasanya terletak di folder XAMPP/php.exe. Atau jika ingin langsung ke arah file bisa menggunakan Config pada XAMPP Control Panel yang akan mengarahkan ke folder apache.

Atau bisa juga dengan searching langsung saja. Pilih saja file php.exe hasil pencarian.

Proses selanjutnya adalah instalasi. Jika tidak punya Proxy, lewatkan saja dengan menekan tombol Next.

Sebelumnya, jika kita ingin menambah Path bisa dengan men-ceklis pada pilihan path. Tampak seperti gambar di bawah informasi letak php, versinya, serta lokasi Path. Jika sudah yakin, tekan saja Install untuk melanjutkan proses instalasi.

Jika sudah, tunggu hingga selesai. Selamat, kita telah berhasil menginstall composer. Untuk penggunaannya silahkan lihat post yang lalu untuk menjalankan aplikasi Laravel.

Memasang Aplikasi Web Yang Dibuat dengan Framework LARAVEL

Terkadang kita diminta menginstal/memasang aplikasi dengan framework laravel yang telah dibuat programer. Ikuti langkah-langkah berikut ini:

1. Unduh aplikasi yang telah dibuat programmer, biasanya dari Github atau Google Drive.

2. Ekstrak jika masih berformat ZIP.

3. Pada lokasi folder, klik kanan dan masuk ke terminal

4. Ketik: composer update pada terminal, tunggu beberapa saat

5. Buka folder aplikasi laravel, disarankan menggunakan sublime text atau visual studio code untuk mempermudah beralih antar file. Jika sudah ada file .env pekerjaan lebih mudah, anggap saja kita belum memiliki. Lakukan rename pada file .env.example menjadi .env.

6. Berikutnya adalah mengisi APP KEY pada file .env. Ketik: php artisan key:generate pada terminal. Pastikan muncul pesan: Application key set successfully. Pastikan APP KEY sudah terisi.

7. Lihat kembali gambar di atas pada bagian DB_. Isi host, port, nama database dan root. Jika belum ingin dipassword, biarkan saja password kosong.

8. Masuk ke phpmyadmin pada browser untuk membuat database seperti pada file .env.

9. Selanjutnya adalah migrasi data dengan mengetik pada terminal: php artisan migrate. Tunggu hingga proses migrasi selesai.

10. Cek di phpmyadmin, pastikan muncul tabel-tabel yang terpasang.

11. Terakhir, jalankan server laravel dengan mengetik: php artisan serve. Pastikan server hidup dan buka browser dengan alamat: http://127.0.0.1:8000. Selamat, kita telah berhasil memasang sebuah aplikasi yang dibuat dengan framework LARAVEL.

Run Python di Apache

Postingan yang lalu membahas bagaimana menjalankan python di web dengan framework terkenal python, yaitu flask. Ada kemungkinan python akan menggeser php di masa yang akan datang mengingat tren python yang terus meningkat mengalahkan php. Saat ini apache masih menjadi andalan untuk web server php. Oleh karena itu perlu mengintegrasikan python dengan server favorit tersebut.

XAMPP sebagai software yang banyak dipakai untuk menjalankan php dengan databasenya (mysql atau mariadb) dapat diintegrasikan dengan python. Berikut ini tekniknya untuk yang berbasis windows.

Pada dasarnya ada dua hal yang harus dilakukan:

  • Set httpd.conf
  • Menambah header di file python (*.py)

Untuk yang linux agak sedikit rumit mengingat adanya hak akses khusus ke folder-folder linux, misal ubuntu. Silahkan dicoba.

Big Data dengan Matlab

Dulu saya pernah menggunakan Matlab dengan paralel prosesing (pos yang lalu). Caranya dengan menjalankan serempak aplikasi Matlab beberapa kali. Tetapi saat ini, Matlab terbaru menyediakan fasilitas Big Data.

Salah satu fasilitasnya adalah dengan menyediakan ‘workers’, yaitu proses terpisah, istilah lain dari processor. Selain itu disediakan pula sejenis matriks tetapi hanya sebagian yang ditampilkan, dikenal dengan nama ‘Tall Array’. Fasilitas ini memungkinkan pemodel merakit model tanpa khawatir berat akibat menguji dengan seluruh data. Dengan Tall array tidak seluruh data dirunning, hanya beberapa saja, yang penting jalan. Jika model yang dirakit sudah ok dijalankan dengan Tall Array, maka untuk menjalankan total data dengan instruksi ‘gather’. Silahkan baca lagi postingan tersebut untuk detilnya.

Untuk mengeksekusi Big Data dan Deep Learning, ada baiknya anda menggunakan laptop/komputer dengan GPU dengan compute ability di atas 5. Khusus Windows, silahkan diset GPU agar idle time diperpanjang, mengingat Windows ketika melihat GPU ‘nganggur’/idle, akan direset, padahal tidak idle, melainkan sedang mengeksekusi program. Silahkan lihat cara mengeset di sini.

Untuk mengetahui bagaimana menggunakan Matlab untuk aplikasi Big Data, silahkan lihat video berikut ini. Sekian selamat mencoba.

REF: https://www.mathworks.com/matlabcentral/answers/22047-cuda_error_launch_timeout

Contoh Deployment Python dengan PHP

Lanjutan dari pos sebelumnya, kali ini membahas praktik sederhana menjalankan hasil pemodelan Machine Learning (ML) dengan Python pada PHP. Sebenarnya Python memiliki framework Web sendiri, misalnya Flask dan Django. Namun, kebanyakan server menggunakan Apache yang berbasis PHP. Oleh karena itu perlu mengintegrasikan Python dengan Apache. Silahkan lihat tatacara untuk XAMPP di windows pada video berikut.

Untuk Linux, misal Ubuntu agak sedikit rumit karena hak akses pada file, serta environment yang agak rumit, seperti video berikut.

Video berikut menjelaskan sample deployment sentiment analysis dengan bahasa Python pada PHP-MySQL di windows.

CRISP-DM & CRISP-ML

So far, we are familiar with both waterfall-based and iteration-based development cycles. The rapid development of Artificial Intelligence (AI) and Machine Learning (ML) makes it quite difficult for vendors to follow the development methods used because AI, DM, and ML involve datasets. So the data and methods in ML cannot be separated.

One of the development processes currently used is the Cross Industry Standard Process for Data Mining (CRISP-DM). This process integrates DM modeling into the development process. Especially in the data understanding to evaluation section.

After CRISP-DM was used to create Data Mining-based applications, some developers needed a new process standard specifically for ML, especially due to the rapid development of Deep Learning. So that raises CRISP-ML where ML is slightly different from DM. An integration with quality assurance (QA) results in the CRISP-ML(Q) development model.

In accordance with its meaning, ML requires a learning process before inference, which is usually unsupervised. For more details, please see the following video.

Rest API Sederhana – Read Database dengan GET

Saat ini kebanyakan aplikasi Web menggunakan metode mengakses dengan Application Programming Interface (API). Metode ini berisi web service yang menyediakan fasilitas mengakses data lewat protokol HTTP: GET, PUT, POSH, dan DELETE. Lewat protokol http, yang akan mengakses tidak perlu menggunakan bahasa pemrograman yang mengakses data, misal lewat SELECT pada akses standar SQL.

Dengan API maka data di database serves dapat diakses oleh aplikasi lain yang berbeda platform dan bahasa dengan Web server, misal mengakses lewat aplikasi Android/IOS atau lewat front-end VuJS, React-JS, dan sejenisnya. Jadi API laksana tombol yang dapat diakses oleh aplikasi lain. Berikut ilustrasi penggunaannya, dengan GET yang berfungsi me-read database. Tentu saja dalam implementasinya dibutuhkan token untuk membatasi siapa saja yang bisa mengakses API tersebut.

Software Testing

Salah satu aspek penting dalam software engineering adalah pengujian perangkat lunak. Fungsinya adalah mengetahui apakah aplikasi yang dibuat sesuai dengan kebutuhan (requirements) atau tidak. Ada beragam jenis pengujian, salah satunya adalah vulnerability test. Tes yang masuk kategori black box ini terkadang disebut penetration test karena bertujuan mengetahui apakah aplikasi tersebut memiliki tingkat keamanan yang baik. Biasanya untuk aplikasi-aplikasi berbasis web (web-based).

Banyak software-softaware yang bisa digunakan, salah satu yang gratis adalah OWASP ZAP yang bersifat online tanpa perlu menginstal terlebih dahulu. Silahkan lihat tata cara berikut ini.

Software Tester, Software Quality Assurance, dan sejenisnya banyak dibutuhkan dalam project pengembangan perangkat lunak. Kompetensi ini sudah ada dalam skema Badan Nasional Sertifikasi Profesi (BNSP) di Indonesia.

Web Scraping

There are two terms in web searching, namely Web Crawling and Web Scraping. The two terms have a difference. If Web Crawling looks for the location/address of the site, Web Scrapping retrieves the content or site content.

Google for example, when searching, this engine will crawl sites around the world based on keywords. Next the user will get a list of sites suggested by Google based on their ranking. Furthermore, the content will be searched manually by the user from sites suggested by Google or other search engines. The combination of crawling and scraping results in a system that in addition to finding the location of sites based on keywords, also retrieves the content of these sites.

The following video is an example of how a simple application scrapes information from four sample sites based on keywords and then the results are stored in csv (Jurnal link). Stored results can be further utilized, for example for sentiment analysis (Jurnal link).

 

 

Big Data dengan Matlab

Tahun 2014 saya masih menjadi mahasiswa doktoral Information Management. Ada satu mata kuliah: Decision Support Technologies yang berisi bagaimana sistem informasi membantu pengambil keputusan, salah satunya dengan pemanfaatan Big Data.

Waktu itu saya satu grup dengan mhs dari Thailand dan Uzbekistan. Tugasnya cukup menarik, yaitu menggunakan data dari Kagel yang berisi jutaan record penulis artikel ilmiah yang masih kasar (raw). Targetnya adalah mengumpulkan penulis yang berserakan menjadi rapih, dimana tidak ada redundansi penulis. Terkadang ada nama penulis yang terbalik susunannya, tanpa nama tengah, dan lain-lain. Selain itu perlu deteksi untuk afiliasi dan bidang ilmunya. Yang tersulit adalah terkadang nama belakang perempuan yang mengikuti nama suami.

Kendala utamanya adalah data yang berukuran besar baik dari sisi kapasitas maupun jumlah record. Ketika dibuka dengan Excel, tidak seluruhnya terambil karena ada batas record Microsoft Excel yakni sebanyak 1,048,576 record dan 16,384 kolom. Terpaksa menggunakan sistem basis data, yang termudah adalah Microsoft Access. Waktu itu fasilitas Big Data pada Matlab masih minim, terpaksa ketika menjalankan pemrosesan paralel, secara bersamaan dibuka 3 Matlab sekaligus (lihat postingan saya tahun 2014 yang lalu).

Tipe Data Tall

Sekitar tahun 2016-an Matlab memperkenalkan tipe data Tall dalam menangani data berukuran besar. Prinsipnya adalah proses upload ke memory yang tidak langsung. Sebab kalau ketika impor data dengan cara langsung maka akibatnya memory akan habis, biasanya muncul pesan ‘out of memory‘. Oleh karena itu Matlab membolehkan mengupload dengan cara ‘mencicil’. Tentu saja untuk memperoleh hasil proses yang lengkap dengan bantuan fungsi gather.

Seperti biasa, cara mudah mempelajari Matlab adalah lewat fasilitas help-nya yang lengkap, maklum software ‘berbayar’. Lisensinya saat ini sekitar 34 jutaan, kalau hanya setahun sekitar 13 juta dan kurang dari 1 juta untuk pelajar. Pertama-tama ketik saja di Command Window: help tall. Pastikan muncul, jika tidak muncul, berarti Matlab Anda belum support fungsi Big Data tersebut. Walau mahal, tetapi Anda bisa mencoba sebulan secara gratis. Ok, jalankan saja help yang muncul.

Dengan fungsi datastore, pertama-tama sampel Big Data disiapkan. Di sini masih menggunakan Comma Separated Value (CSV). Perhatikan hasil proses fungsi tall yang berupa matriks berukuran Mx4. Nah, disini istilah M muncul yang berarti ‘beberapa’, karena yang ditarik belum seluruhnya.

Tampak paralel pool sudah terbentuk, dengan 4 worker. Di sini dibatasi 30 menit, jika idle/tidak digunakan akan di-shutdown. Terakhir, fungsi gather dibutuhkan untuk merekapitulasi hasil olah.

Tampak informasi pooling yang merupakan ciri khas pemrosesan paralel telah selesai dilakukan. Sekian, semoga informasi ini 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.