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.

Iklan

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.

Computer Vision

Perkembangan Artificial Intelligence (AI) saat ini sangat cepat baik dalam metode dasar maupun penerapan di lapangan. Banyak instansi yang membutuhkan AI, dari kedokteran, pertanian, hingga pertahanan dan keamanan. Salah satu penerapannya adalah dalam Computer Vision.

Image Processing

Terkadang banyak yang bingung apa perbedaan image processing dengan computer vision. Keduanya sama-sama mengelola gambar/citra, hanya saja computer vision lebih dalam lagi, dimana sebuah model dibuat untuk mampu mengenali sebuah gambar. Sementara itu, image processing memiliki tugas pokok hanya mengolah gambar. Biasanya bekerja sebagai pre-processing sebelum masuk ke modul computer vision, misalnya merubah citra berwarna menjadi hitam putih, merubah ukuran/dimensi gambar, merotasi dan hal-hal yang mengkonversi gambar agar bermanfaat.

Walaupun terlihat sederhana tetapi penerapannya sangat penting, misalnya konvolusi yang merubah gambar besar menjadi gambar yang berukuran lebih kecil tetapi tidak merubah “ciri” dari gambar aslinya. Metode ini digunakan dalam Convolution Neural Network (CNN) bersama dengan Pooling (memperkecil ukuran/dimensi gambar) yang ternyata meningkatkan performa Neural Networks.

Pengenalan Gambar

Sebenarnya untuk mengenali gambar merupakan kemampuan yang sudah dimiliki oleh manusia. Namun jika yang harus dikenali sangat banyak, atau harus selalu “on” 24 jam, tentu saja manusia tidak sanggup. Oleh karena itu riset yang mengembangkan model seperti manusia yang mampu mengenali gambar sangat bermanfaat. Akurasinya pun saat ini kian mendekati 100%.

Selain aspek kuantitatif dalam mengenali gambar, terkadang model pengenalan gambar harus mampu mengenali gambar jauh melebihi mata manusia, misalnya dalam mendeteksi foto rontgen, sel-sel mikroskopis, dan mineral di dalam bumi. Bahkan dalam mengenali tutupan lahan, model melebihi kemampuan mata manusia mengenali foto satelit, mengingat sensor satelit, misalnya Operational Land Imager (OLI) memiliki 9 band frekuensi, dimana mata manusia hanya mampu melihat beberapa band frekuensi saja.

Surveillance System

Selain gambar statis, computer vision juga berkembang untuk mendeteksi video. Biasanya diterapkan pada CCTV keamanan. Jika ada objek mencurigakan, sistem akan memberikan warning sehingga dapat bekerja 24 jam dan selalu waspada, hal yang tidak mungkin dilakukan oleh seorang staf keamanan. Sekian semoga tertarik riset di bidang ini.

Praktek Basis Data dengan Google Colab

Google Colab merupakan media pembelajaran pemrograman yang praktis karena baik bahasa pemrograman maupun mesin/harware disediakan oleh Google. Dengan mengandalkan laptop jadul atau handphone bisa dilaksanakan, asal memiliki koneksi internet. Bahasa yang digunakan adalah bahawa Python yang sangat cocok untuk machine learning. Bagaimana untuk pengolahan basis data?

SQLite

SQLite disediakan dalam satu library yang harus diinstal terlebih dahulu sebelum diimpor. Data diletakan baik dengan koneksi ke Google Drive atau diletakan secara temporal di folder pada Google Colab.

# CREATING THE TABLE
import sqlite3
conn = sqlite3.connect(‘unisma.db’)
print(“Opened database successfully”);
conn.execute(”’
CREATE TABLE IF NOT EXISTS data_siswa(nama text,
matkul text,
dosen text,
nilai integer);”’)
conn.commit()
print(“Table created successfully”);
conn.close()

Setelah Tabel terbentuk, silahkan dimasukan data-datanya misalnya sebagai berikut. Pastikan terisi dengan baik.

# INSERTING VALUES
conn = sqlite3.connect(‘unisma.db’)
conn.execute(“INSERT INTO data_siswa VALUES(‘wahyu’, ‘matematika’, ‘malikus’, 72);”)
conn.execute(“INSERT INTO data_siswa VALUES(‘budi’, ‘bahasa’, ‘amin’, 90);”)
conn.execute(“INSERT INTO data_siswa VALUES(‘linda’, ‘matematika’, ‘malikus’, 91);”)
conn.execute(“INSERT INTO data_siswa VALUES(‘wahyu’, ‘bahasa’, ‘amin’, 75);”)
conn.execute(“INSERT INTO data_siswa VALUES(‘linda’, ‘bahasa’, ‘amin’, 90);”)
conn.execute(“INSERT INTO data_siswa VALUES(‘budi’, ‘matematika’, ‘malikus’, 60);”)
conn.commit()

Untuk menggunakan query silahkan menggunakan instruksi SELECT untuk mengetahui isi dari data/tabel yang ada. Bahasa standar SQL dapat diterapkan pada SQLite. Tentu saja untuk implementasi diharapkan menggunakan Python di lokal komputer kita. Google colab cukup baik untuk media pembelajaran atau sebagai penguji algoritma yang akan diterapkan pada system.

conn.close()
conn = sqlite3.connect(‘unisma.db’)

cursor = conn.execute(”’ SELECT nama
                          FROM data_siswa
                          WHERE matkul=’matematika’;”’)

for row in cursor:
  print(row)
conn.close()

Hasil:

  • (‘wahyu’,)
  • (‘linda’,)
  • (‘budi’,)

Untuk lebih jelasnya silahkan lihat video saya berikut, sekian semoga bisa membantu.

 

Relasi Antar Kelas – Komposisi

Komposisi merupakan relasi antar kelas yang lebih ketat dibanding agregasi (lihat pos yang lalu), sedikit berbeda dibanding inheritance yang bersifat generalisasi/spesialisasi. Masih dengan kasus yang sama berikut ini.

Diagram kelas Unified Modeling Language (UML) di atas memperlihatkan relasi antara kelas Dosen dan Mahasiswa “Membimbing”. Teknik di atas sering muncul di buku karangan Alan Denis (System Analysis & Design – an OO Approach with UML).

Karakteristik agregasi antara dua kelas adalah independen. Jika dihapus satu objek yang berelasi, objek lain masih ada, sementara komposisi tidak. Ada istilah Wadah (Container) dan Isi (Contain). Jika wadah dihapus maka isi ikut terhapus juga. Misalnya komputer yang memiliki komponen prosesor, ram, mainboard, dan lain-lain dihapus, maka komponen otomatis ikut terhapus.

Secara kode mirip dengan agregasi, hanya saja isi, dalam hal ini isi, misalnya dosen pembimbing, dibangkitkan dalam objek yang berperan sebagai wadah, misal mahasiswa.

Pada agregasi, objek mahasiswa y (si Wahyu) memiliki dosen pembimbing x (Rahmadya). Jika objek y dihapus (ketik saja “del y” di colab) x masih ada. Nah, untuk komposisi dosen pembimbing y (Ujang) diletakan di dalam y sebagai wadah. Jika y dihapus/delete dosen pembimbing pun terhapus, berbeda dengan agregasi yang masih ada x tersisa. Berikut secara UML bagaimana notasi agregasi dan komposisi.

Namun dalam implementasinya antara agregasi dan komposisi hanya garis saja seperti dalam buku Alan Dennis et al, kecuali jika ingin merinci diagram kelasnya. Untuk inheritance harus dicantumkan dalam diagram simbolnya, karena atribut dan metode ada di kelas induk. Jika tidak diberi simbol panah khawatir pembaca akan bingung kemana atribut dan metode lainnya yang berada di kelas induk. Untuk lebih jelasnya silahkan lihat video Youtube berikut ini.