Bahasa Untuk Pemrograman Berorientasi Objek

Tiap kampus ternyata berbeda-beda awal perkuliahannya, termasuk kampus tempat saya mengajar yang baru mulai pertemuan pertama semester genap. COVID-19 memang membuat beberapa agenda perkuliahan berubah. Faktor perkuliahan online dan kesiapan kampuslah yang membuah pergeseran dan perubahan sistem, dari yang tatap muka menjadi online. Terutama kesiapan dalam menangani praktikum.

Untuk bidang komputer, khususnya materi pemrograman dapat dilakukan praktik secara online. Problem utama hanyalah di sisi mahasiswa yang terpaksa memindahkan komputer lab ke dalam laptop sendiri, sekaligus sarana network berupa pulsa/paket internet. Nah, untuk mahasiswa yang pas-pasan, tentu saja agak kesulitan ketika memiliki laptop dengan spesifikasi minim. Oleh karena itu perlu difikirkan bagaimana menyiapkan sarana yang murah-meriah.

Java

Java dan C++ sudah sejak lama menjadi sarana belajar pemrograman berorientasi objek. Silahkan lihat postingan saya tentang DB4O untuk basis data objek. Sebelumnya, bahasa ini menjadi andalah saya untuk praktik pemrograman berorientasi objek, tetap kondisi online sangat menyulitkan mahasiswa, sehingga perlu sarana murah-meriah lainnya.

Python

Bahasa yang paling banyak diminati saat ini adalah Python. Banyak paket yang tersedia dari Python berbasis konsol hingga paket Anaconda yang gratis diunduh. Hanya saja paket ini membutuhkan sumber daya yang besar untuk mengaktifkan fasilitas-fasilitas seperti Jupyter Notebook atau Spyder.

Untungnya Google menyediakan sarana programming hanya dengan browser dan mempersilahkan orang menggunakan servernya, termasuk Graphic Processing Unit (GPU) yang cukup ampuh dalam menangani Deep Learning. Bagaimana untuk pemrograman berorientasi objek?

Saat ini Python memiliki pesaing kuat, suatu bahasa pemrograman secepat C++, sedinamis Ruby, dan semudah Python, yaitu Julia. Namun bahasa ini tidak ditujukan untuk pemrograman berorientasi objek, berbede dengan Python yang dari awal memang untuk objek.

Mencoba Pemrograman Objek Sederhana

Baik untuk praktik awal, silahkan buka Google Colab Anda (lihat tata cara di post yang lalu). Copy paste saja kode berikut ini sebagai ilustrasi bagaimana sebuah kelas dengan method yang tersedia.


import math
class Point:
    'Represents a point in two-dimensional geometric coordinates'
    def __init__(self, x=0, y=0):
        '''Initialize the position of a new point. The x and y
        coordinates can be specified. If they are not, the point
        defaults to the origin.'''
        self.move(x, y)
    def move(self, x, y):
        "Move the point to a new location in two-dimensional space."
        self.x = x
        self.y = y
    def reset(self):
        'Reset the point back to the geometric origin: 0, 0'
        self.move(0, 0)
    def calculate_distance(self, other_point):
        """Calculate the distance from this point to a second point
        passed as a parameter.
        This function uses the Pythagorean Theorem to calculate
        the distance between the two points. The distance is returned
        as a float."""
        return math.sqrt((self.x - other_point.x)**2 + (self.y - other_point.y)**2)

Kelas di atas tidak menghasilkan output karena belum dihidupkan objeknya. Berikut cara mencoba method yang direpresentasikan dalam keyword “def” di atas.

point=Point(3,5)
print("point awal = ",point.x, point.y)
point2=Point(5,5)
jarak=point.calculate_distance(point2)
print("jarak dari point awal =",jarak)

Pastikan hasilnya tampak seperti di bawah ini, selamat mencoba.

Library & Toolbox .. Haramkah?

Belajar ilmu komputer, khususnya coding, bagi mahasiswa milenial sedikit membingungkan, apalagi ketika perkembangan teknologi saat ini yang super cepat. Jika mengikuti alur normal, maksudnya dari dasar yang paling dasar .. terkadang membuat mereka stres, ditambah lagi godaan medsos, game, dan youtube.

“Untuk apa belajar itu Pa?”, merupakan pertanyaan yang sudah muncul sejak jaman batu mungkin. Bahkan De Morgan sempat dianggap gila di jamannya. Maklum penerapannya belum ada saat itu, yaitu komputer. Jawab saja sebisanya pertanyaan itu, toh nanti akhirnya mengerti juga, yang penting mengikuti kuliah hingga selesai, minimal sebelum lulus sudah mengerti .. mudah-mudahan.

Begitu juga dengan pemrograman, atau dalam bahasa kekiniannya, Coding. Jika mempelajari dari dasarnya, misalnya bahasa C++ atau bahasa rakitan, baik dosen dan mahasiswa akan lelah, belum lagi mencari pengajar bahasa tersebut yang mulai langka. Kalau untuk belajar algoritma dan struktur data mungkin oke lah. Tapi jika untuk tugas akhir/skripsi, untuk membuat aplikasi paling sederhana pun butuh waktu lama dengan bahasa pembuat bahasa dan sistem operasi tersebut.

Beberapa dosen, cerita dari teman, banyak yang melarang menggunakan Toolbox pada Matlab atau Library di Python. Alasannya seperti biasa, mahasiswa jadi kurang berfikir mendasar, mengingat dengan library dan toolbox, mahasiswa tinggal pakai. Ada benarnya juga.

Permasalahannya tidak semua mahasiswa ilmu komputer fokus ke pemrograman. Apalagi ada banyak jenis programmer, dari web, android/iOS, game, disain, dan lain-lain. Saya pernah mengajar teknik kompilasi dengan bahasa Lex and Yacc yang berbasis C++, untuk membuat bahasa dengan dasar-dasar teknik automata. Hasilnya, mahasiswa kalang kabut. Apalagi untuk mahasiswa sistem informasi atau jurusan non komputer yang butuh bantuan ilmu komputasi.

Halal .. asalkan

Untuk pengguna Toolbox Matlab, ada baiknya Anda daftar gratis di forum Mathworks. Di sana banyak share m-file yang berupa kode-kode untuk fungsi tertentu. Jadi kita bisa belajar bagaimana algoritma bekerja untuk menyelesaikan kasus tertentu. Atau sebenarnya di program Matlab bisa dilihat kode program sebuah fungsi dengan mengetik “edit <nama fungsi>”.

Yang kurang tepat adalah, siswa hanya menggunakan Toolbox atau fungsi yang tersedia tanpa memahami alur programnya.

Nah, saat ini Python merupakan bahasa yang sedang trendy, silahkan lihat dengann Google Trend. Bahasa ini mengalahkan bahasa-bahasa lain dari sisi pencarian di Google.

Python yang di tahun 2012 terbawah, secara perlahan menjadi yang pertama, menyalib bahasa lainnya, bahkan bahasa terkenal, Java. Hal ini karena Python banyak memiliki Library yang sangat membantu mempercepat pembuatan aplikasi.

Seperti pada Matlab, yang kurang baik adalah jika mahasiswa menggunakan Library saja, tanpa memahami prinsip dasar metode/algoritmanya, misalnya Scikit Learning. Dan untuk melihat struktur program, Library pada Python mudah diperoleh. Tetapi untuk memahaminya, dasar-dasar pemrograman di Python harus dikuasai terlebih dahulu, ditambah dengan pemahaman class dan objek. Hal ini karena Library menggunakan class, parameters, dan def, ciri khas pemrograman objek (kelas, atribut, dan metode/operasi).

Untuk mahasiswa ilmu komputer, penggunaan aplikasi seperti Rapidminer, Weka, dan sejenisnya sebenarnya boleh saja, namun untuk mahasiswa S1 dan D3 yang dituntut menghasilkan aplikasi, menurut saya tidak bisa dijadikan tugas akhir/skripsi. Minimal untuk materi mata kuliah. Tapi mubazir juga sih, dipelajari di kuliah tapi tidak bisa dipraktekan/digunakan untuk tugas akhir/skripsi.

Postingan ini sekedar pendapat pribadi ya, untuk bagaimana melihat kode sumber dari library yang ada, silahkan lihat video Youtube saya berikut ini. Isinya membandingkan penggunaan K-Nearest Neighbors dengan Scikit Learning dan tanpa library Machine Learning.

Membuat Tensor Sederhana dengan TensorFlow pada Google Colab

Istilah tensor dijumpai dalam matematika, khususnya dalam aljabar. Tensor sebenarnya bentuk umum dari besaran, jika dimensinya nol berarti skalar dan jika berdimensi satu ke atas, maka disebut vektor dan matriks. Istilah tensor digunakan juga oleh Google dalam library python “TensorFlow”. Istilahnya mirip tensor, terutama ketika mengelola vektor dan matriks.

Dalam penerapannya, TensorFlow sedikit membingungkan karena memiliki dua fase: konstruksi dan eksekusi. Tensor ketika digunakan berupa graph yang berisi nodes dan edges. Jika nodes berisi operasi, edges berisi tensor. Sementara itu, fase eksekusi membutuhkan session.

Untuk lebih jelsnya silahkan buka Google Colab. Buat satu notebook baru, beri nama misalnya FirstTensor.ipynb. Disini kita akan membuat satu tensor sederhana yang berisi satu variabel konstant 30. Operasi yang dilakukan adalah mencetak (print) konstanta tersebut. Masukan kode berikut dalam sel colab tersebut.

Di sini tensorflow versi 1.x digunakan. Secara default Colab menyediakan versi 2.x. Perhatikan sel pertama berisi impor library tensorflow. Line pertama merupakan instruksi standar penggunaan tensorflow versi 1. Sel kedua berisi konstruksi variabel konstan x=30. Selain itu dibuat satu session dengan nama “sess” yang kemudian dioperasikan berupa fungsi print.

Sepertinya agak ribet karena untuk mencetak konstanta 30 saja butuh beberapa line. Namun mengingat satu sesi bisa diterapkan untuk satu prosesor (GPU) maka komputasi bisa dilakukan dengan banyak prosesor yang bekerja secara paralel. Jadi walau agak sedikit merepotkan di awal tetapi ketika diterapkan dengan banyak prosesor, hasilnya lebih cepat. Biasanya diterapkan dalam sebuah framework deep learning. Sebagai ilustrasi, tensor dalam graph di bawah ini.

Hasil perkalian a dan b akan dikurangi hasil penjumlahan b dan c. Instruksi pythonnya adalah sebagai berikut menlanjutkan dari instruksi sebelumnya.


import numpy as np
a = tensorflow.constant(np.array([5, 7, 10]))
b = tensorflow.constant(np.array([2, 3, 21]))
c = tensorflow.constant(np.array([3, 5, 7]))
d = a * b  # tensorflow.multiply(a,b)
e = c + b  # tensorflow.add(c,b)
f = d - e  # tensorflow.subtract(d,e)
sess = tensorflow.Session()
outs = sess.run(f)
sess.close()
outs

Jalankan dan hasilnya harus sama dengan gambar di atas [5,13,182]. Selamat mencoba tensor dalam tensorflow.

Ref:

Menggunakan Algoritma Genetika dengan Python

Algoritma Genetika (GA) merupakan salah satu nature-inspired optimization yang meniru evolusi makhluk hidup. Gampangnya, generasi terkini merupakan generasi yang terbaik yang adaptif terhadap lingkungan. Prinsip seleksi, kawin silang, dan mutasi diterapkan ketika proses optimasi secara pemilihan acak (random) dilakukan. Karena adanya unsur pemilihan acak, GA masuk dalam kategori metaheuristik bersama particle swarm optimization (PSO), simulated annealing (SA), tabu search (TS), dan lain-lain.

Bagaimana algoritma tersebut bekerja dalam suatu bahasa pemrograman saat ini dengan mudah kita jumpai di internet, dari youtube, blog, hingga e-learning gratis. Saat ini modul-modul atau library dapat dijumpai, misalnya di Matlab. Nah, dalam postingan ini kita akan mencoba dengan bahasa pemrograman Python. Sebelumnya perlu sedikit pengertian antara pembuatan program dari awal dengan pemrograman lewat bantuan sebuah modul atau library.

Beberapa pengajar biasanya melarang mahasiswa untuk langsung menggunakan library karena memang peserta didik harus memahami konsep dasarnya terlebih dahulu. Untungnya beberapa situs menyediakan kode program jenis ini yang dishare misalnya ahmedfgad, datascienceplus, pythonheatlhcare, dan lain-lain. Saya dulu menggunakan Matlab, dan ketika beralih ke Python karena pernah dengan bahasa lain maka dengan mudah mengikuti kode dengan bahasa lainnya. Oiya, saat ini GA, PSO, TS, dan lain-lain lebih sering disebut metode dibanding dengan algoritma karena tingkat kompleks dan ciri khas akibat mengikuti prinsip tertentu (makhluk hidup, fisika, biologi, dan lain-lain).

Selain memahami prinsip dasar, dengan kode python GA yang murni berisi langkah-langkah dari seleksi, kawin silang dan mutasi, jika Anda mengambil riset doktoral terkadang perlu menggabungkan dengan metode-metode lain, misalnya riset saya dulu, mutlak harus memodifikasi seluruh kode yang ada, jadi agak sulit jika menggunakan library yang tinggal diimpor.

Nah, jika Anda sudah memahami, dan sekedar menggunakan atau membandingkan metode satu dengan lainnya, penggunaan library jauh lebih praktis. Misal Anda menemukan metode baru dan harus membandingkan dengan metode lain, maka metode lain pembanding itu dapat digunakan, bahkan karena karakternya yang dishare maka orang lain (terutama reviewer jurnal) yakin keabsahannya (bisa dicek sendiri). Untuk GA bisa menggunakan library dari situs-situs berikut antara lain geneticalgorithms, pygad, pydea, dan lain-lain. Sebagai ilustrasi silahkan melihat video saya berikut yang menggunakan Google Colab.

Belajar Membuat Game dengan Python

Ternyata Python tidak hanya digunakan untuk Machine Learning, melainkan juga untuk membuat game. Banyak sumber-sumber belajar di internet, baik di Github maupun penjelasannya di Youtube. Nah, bagi Anda yang pemula ada baiknya membaca postingan ini bagaimana menggunakan dua metode dalam menjalankan Python yaitu konsol dan Jupyter Notebook.

Konsol

Di sini kita ambil contoh dua game terkenal yang dibuat dengan Python yaitu Flappy Bird dan Space Invaders. Install Python di laptop Anda terlebih dahulu, disarankan menggunakan cara yang paling gampang walau agak berat, yaitu paket Anaconda.

Menggunakan konsol sangat dianjurkan bagi Anda yang mahir dan cepat dalam mengetik. Di sini harus dipahami terlebih dahulu cara menangani virtual environment
di Python. Selain itu library-library pendukung harus diinstall juga, terutama pygame karena di sini kita coba menggunakan library tersebut.

Untuk mengedit bisa menggunakan IDLE, Sublime Text, Notepad, atau text editor lainnya. Langkah pertama dalam belajar adalah mencoba menjalankan (running) program tersebut, dilanjutkan dengan mengedit fungsi-fungsi tertentu, misal mengganti gambar/image tokoh, background, atau memindah fungsi tombol naik/turun/kiri/kanan dengan tombol baru.

Jupyter Notebook

Jika Anda pengguna Google Colab, ada baiknya menggunakan Jupyter Notebook karena memang IDE-nya yang tidak jauh berbeda. Ekstensi filenya pun sama (*.ipynb) yang berbeda dengan Python konsol (*.py). SIlahkan membuka Jupyter Notebook lewat Anaconda atau konsol. Untuk lebih cepat sepertinya konsol lebih cepat dan ringan. Arahkan folder kerja ke lokasi game dan ketik “jupyter notebook”. Pastikan fasilitas jupyter notebook tersedia di environment kita (di sini contohnya ‘base’) yang jika belum ada gunakan > pip install jupyter.

Mengingat jenis filenya yang berbeda maka terlebih dahulu kita membuat new file dilanjutkan dengan mengkopi isi file *.py ke dalam file Jupyter Notebook yang baru tersebut. Jalankan file sample, pastikan game berjalan dengan baik.

Coba mengganti beberapa fungsi game tersebut, misalnya tombol bergeraknya pesawat, atau mengganti background dan bentuk pesawatnya. Berikut video penjelasannya, semoga bermanfaat.

 

 

Inverted Index dengan Google Colab – Python

Beberapa buku teks memiliki index yang diletakan di akhir buku. Isi index adalah kata-kata penting beserta halaman dimana kata tersebut berada. Biasanya kata-kata tersebut disebutkan lebih dari satu halaman.

Sementara itu ketika seseorang mengetikan kata di mesin Google, misalnya “American Revolution”, maka Google akan mencari di mana saja kata tersebut berada, misalnya pada Index di gambar di atas di halaman 84,98, dan 166. Karena diletakan di muka yang mirip daftar isi, maka di situlah kata “inverted” bermula, yang seharusnya di belakang tapi di muka sebagai alat pencari. Sebagai contoh, puisi “Aku” karya Chairil Anwar berikut. Anggap saja satu line/baris merupakan satu berkas dokumen, atau kalau dalam satu buku adalah halaman.

  • Doc 1.Kalau sampai waktuku
  • Doc 2.’Ku mau tak seorang ‘kan merayu
  • Doc 3.Tidak juga kau
  • Doc 4.Tak perlu sedu sedan itu
  • Doc 5.Aku ini binatang jalang
  • Doc 6.Dari kumpulannya terbuang
  • Doc 7.Biar peluru menembus kulitku
  • Doc 8.Aku tetap meradang menerjang
  • Doc 9.Luka dan bisa kubawa berlari .. Berlari
  • Doc 10.Hingga hilang pedih peri
  • Doc 11.Dan aku akan lebih tidak peduli
  • Doc 12.Aku mau hidup seribu tahun lagi!

Aslinya sih satu dokumen itu satu berkas berupa buku pdf, postingan internet, jurnal, dll, tapi di sini dianggap satu baris/line saja. Atau bisa juga sih, satu berkas tersebut dijadikan satu baris dengan doc-id sebagai penunjuk line/baris berkas itu. Kalau forward index membuat index dari konten, inverted index memetakan kata/istilah ke konten. Kita memanfaatkan inverted index Google yang setiap hari membuat index (forward index) dari data yang di crawler di seluruh dunia. Berikutnya, untuk praktik siapkan sebuah file txt yang berisi puisi di atas, atau contoh sembarang. Buka Google Colab dan upload file tersebut.

Silahkan lihat kode di referensi di akhir postingan ini. Jika dijalankan, dihasilkan inverted index seperti di bawah ini. Cek apakah benar beberapa kata tepat berada di dokumen/line pada file “Aku.txt” di atas.

Di sini kita tinggal memasukan frekuensi, misalnya ‘berlari’ itu ada dua kali. Untuk jelasnya silahkan lihat video tutorial saya berikut ini.

Ref:

Link: geeksforgeeks.org/create-inverted-index-for-file-using-python/

Koneksi Google Drive dengan Google Colab

Google colab menyediakan fasilitas penyimpanan sementara dengan cara menekan tombol folder di bagian kiri atas. Namun cara ini memiliki kelemahan yakni ketika tidak digunakan maka data yang diupload akan hilang lagi dan kita harus mengunggah ulang. Agar tidak perlu mengunggah ulang Google Colab menyediakan fasilitas menghubungkan Google Drive dengan Google Colab. Data yang diperlukan diunggah ke Google Drive dan Google Colab tinggal mengambil data dari drive saja ketika akan digunakan.

Impor Library

Library yang diperlukan adalah Drive.

Perhatikan di bagian Files, ketika simbol Google Drive ditekan maka ada instruksi untuk me-run sel yang mengaktifkan Drive. Jalankan saja.

Mengisi Authorization Code

Karena terhubung dengan drive maka perlu password Google Drive. Klik URL untuk memasukan authorization code.

Berikutnya tinggal mengkopi saja authorization code dan paste ke isian Google Colab. Pastikan Google Drive sudah aktif.

Menggunakan Drive

Perhatikan munculnya folder Drive di bagian File Google Colab. Selamat mencoba.

Silahkan lihat video tutorialnya berikut,  salah satu materi kuliah pengolahan citra.

Menentukan Kompenen RGB Citra dengan OpenCV

Citra berwarna dapat diketahui komponen Red-Green-Blue penyusunnya. Dalam OpenCV sedikit berbeda, yaitu Blue-Green-Red (BGR). Sistem yang menentukan kematangan buah misalnya, membutuhkan nilai RGB suatu buah yang matang atau belum. Nah, di sini kita coba menggunakan OpenCV yang berjalan di Google Colab untuk menentukan kadar RGB-nya yang kemudian dihitung rata-rata untuk menentukan warna dominan-nya. Dalam prakteknya tidak hanya menggunakan rata-rata melainkan dengan sistem berbasis Jaringan Syaraf Tiruan atau Deep Learning.

Mengimpor Library

Beberapa Library diperlukan antara lain CV2, NumPy, dan Google Colab File (untuk input output interface). Gunakan kode berikut di awal untuk sel baru.

  • import cv2
  • import numpy as np
  • import pandas as pd
  • from google.colab.patches import cv2_imshow
  • from google.colab import files
  • import io

Jalankan sel tersebut pastikan tidak ada kesalahan karena akan menentukan instruksi berikutnya.

Mengambil File Citra

Berikutnya adalah mengupload citra. Sebenarnya upload bisa lewat mekanisme upload di Google Colab. Tapi bisa juga dengan memanfaatkan I/O Google Colab, kita tinggal memilih file citra yang akan diuplad.

  • upload_files=files.upload()
  • for filename in upload_files.keys():
  • upload_files.keys
  • print(‘nama file: ‘,filename)
  • citra=cv2.imread(filename)

Di sini variabel upload_files berisi filename yang akan digunakan untuk imread pada OpenCV untuk mengambil matriks RGB citra tersebut. Gunakan citra RGB untuk latihan ini.

Mengolah Matriks Citra

Citra berwarna memiliki tiga komponen matriks yaitu biru, hijau, dan merah yang masing-masing berturut-turut diberi indeks 0, 1, dan 2.

  • blue=citra[:,:,0]
  • green=citra[:,:,1]
  • red=citra[:,:,2]
  • b=np.average(blue)
  • g=np.average(green)
  • r=np.average(red)
  • print(b)
  • print(g)
  • print(r)

Variabel b, g, dan r berturut-turut rata-rata dari total matriks blue, green, dan red. Fungsi print hanya digunakan untuk mengetahui skor rata-rata untuk mengecek akurasi if-else tahap berikutnya.

Deteksi Warna Dominan

Langkah terakhir adalah instruksi if-else untuk mendeteksi mana nilai yang terbesar apakah blue, green, ataukah red.

  • if b>g:
  • if b>=r:
  • result=print(‘warna dominan: blue’)
  • print(b)
  • else:
  • if g>=r:
  • result=print(‘warna dominan: green’)
  • print(g)
  • else:
  • result=print(‘warna dominan: red’)
  • print(r)

Jalankan dan pastikan warna dominan sesuai dengan kenyataannya.

Self-Supervised Learning di AIS 2020

Hari ini ada acara spesial yakni Artificial Intelligence Summit (AIS) 2020. Beberapa keynote akan dilaksanakan. Salah satunya nanti Yann LeCun, penemu self-supervised learning. Hari ini pengenalan Self-Supervised Learning (SSL) diberikan oleh Prof Bambang dari ITB. Ide menarik dari metode ini adalah bahwa manusia belajar ketika anak-anak sebagian besar tanpa “supervised”/panduan. Mereka menggunakan self-supervised yang dalam SSL dikenal dengan kombinasi pretext dan downstream task.

Jenis pretext task ada banyak antara lain: rotation, colorization, in-painting, jigsaw, placing image patches, dan lain-lain. Presentasi disertai dengan demo program menggunakan Google Colab, lihat di sini programnya. Disertakan pula link Github sumbernya. Silahkan lihat record-nya di Youtube, atau video di bawah ini.

Menghitung Jumlah Kata dengan Python

Menghitung jumlah kata merupakan tugas wajib yang harus bisa diselesaikan oleh mesin pengelola teks. Teknik telah digunakan oleh word processing misalnya MS Word. Ketika kita mengetik, di bagian bawah langsung tercetak jumlah kata yang telah diketik. Nah, di sini kita coba teknik yang digunakan dalam bahasa pemrograman Python.

Library yang digunakan untuk menghitung kata adalah collections yang memiliki satu fungsi bernama Counter. Gunakan instruksi Open untuk mengambil file txt yang akan dikelola.

  • f2 =  open(‘Praktek.txt’‘r’)
  • content = f2.read()
  • print(content)

Variabel content ketika di-print akan menampilkan isi dari file “Praktek.txt” seperti praktek sebelumnya (lihat pos yang lalu). Tetapi kali ini kita menggunakan fungsi split untuk memisahkan kata dari file tersebut.

  • words = open(‘Praktek.txt’).read().split()
  • words

Terakhir kita menggunakan fungsi Counter baik untuk menampilkan jumlah per kata maupun jumlah total kata (dengan fungsi len).

Untuk jelasnya lihat video tutorial ini.

Mengelola Environment Anaconda

Anaconda merupakan pakat Integrated Development Environment (IDE) berbasis Python (https://www.anaconda.com/). Paket lengkap ini sangat membantu siswa yang baru pertama kali belajar bahasa pemrograman Python. Sebelumnya pengguna Python menggunakan konsol untuk memrogram, termasuk mengelola environment-nya (lihat post yang lalu). Namun, Anaconda memperkenalkan teknik yang lebih sederhana dan mudah dicerna lewat Anaconda Navigator.

Mengunduh Anaconda

Untuk menginstal Anaconda, silahkan unduh di sini. Sesuaikan dengan sistem operasi yang kita gunakan, dan pilih versi yang terkini. Jika sudah, jalankan hingga muncul tampilan sebagai berikut:

Mengatur Environment

Pada Anaconda Navigator terdapat menu Environments untuk mengelola environment yang ada. Environment merupakan folder kerja yang berisi fasilitas-fasilitas tertentu, misalnya untuk deep learning, machine learning, dan lain-lain. Maksudnya adalah agar satu aplikasi tidak bercampur dengan aplikasi lainnya sehingga lebih rapi dan terstruktur.

Secara default, environment yang ada adalah base (root), yang di dalamnya sudah terdapat beberapa fasilitas dasar, salah satunya Jupyter Notebook. Untuk membuat satu environment baru, gunakan tombol +Create di bagian bawah. Untuk beralih ke environment lainnya tinggal menekan nama environment tersebut. Tuggu sesaat hingga library yang ada muncul di sebelah kanan. Untuk membuka terminal ataupun Jupyter Notebook, silahkan tekan simbol segitiga di sebelah kanan environment yang dipilih.

Ada baiknya kita menggunakan Open Terminal untuk membuka Jupyter Notebook agar folder sesuai dengan yang kita inginkan.

Perhatikan saya menggunakan environment “Nusaputra” dengan folder kerja di d:\pengajaran\Pengolahan Citra. Instruksi jupyter notebook bermaksud membuka jupyter notebook di browser kita.

Mencoba Jupyter Notebook

Berbeda dengan Google Colab yang selalu terpasang Library, pada Jupyter Notebook library tertentu, misal OpenCV, harus dipasang terlebih dahulu. Gunakan PIP atau dengan Anaconda Navigator, lihat caranya di materi kuliah saya berikut ini. Perhatikan bagaimana mengelola sel, tracing error, dan lain-lain.

Problematika Kuliah Pemrograman

Salah satu skill yang harus dimiliki oleh mahasiswa jurusan yang berhubungan dengan komputasi (ilmu komputer, sistem informasi, sistem komputer, dll) adalah pemrograman. Saat ini bahasa pemrograman yang beredar sangat beragam, dari yang berbasis desktop, web, android/ios, hingga IoT. Tentu saja tidak semua bahasa harus dikuasai oleh mahasiswa komputer. Beberapa buku teks menggunakan konsep pseudocode yang mirip program tetapi dengan bahasa yang dimengerti manusia dan bebas platform bahasa pemrograman. Namun demikian diharapkan mahasiswa mengerti minimal satu bahasa pemrograman dan menguasainya.

Bahasa pemrograman pun banyak tipenya, dari yang berfungsi alat bantu komputasi teknis, program bisnis, statistik, game, hingga mesin pembelajaran dan deep learning. Banyak style yang diterapkan dalam pembelajaran memrogram ini. Hal ini berkaitan dengan maksud dan tujuan pembelajaran pemrograman itu sendiri.

Pemilihan Bahasa Pemrograman

Beberapa dosen senior kebanyakan mengajarkan bahasa C++ sebagai bahasa utama belajar pemrograman. Wajar, bahasa ini sangat ampuh, cepat, dan merupakan bahasa pembentuk bahasa pemrograman lain, bahkan untuk membuat satu sistem operasi. Beberapa dosen yang agak muda menyarankan Java karena bahasa ini banyak digunakan dalam industri. Bahasa ini juga pembentuk bahasa pemrograman lain, misalnya untuk piranti mobile. Saat ini, Python merupakan bahasa yang paling banyak digunakan karena selain ringan, cepat, dan praktis, bahasa ini cocok untuk bidang yang saat ini sedang “in” yakni deep learning.

Style Pengajaran

Beberapa dosen sangat ketat dalam mengajarkan dalam artian, siswa harus mampu memrogram dengan bahasa yang murni. Ciri dosen ini adalah mengharamkan bahasa pemrograman yang sudah memiliki module atau toolbox yang berisi fungsi tertentu. Misal, alih-alih menggunakan fungsi, misalnya average utk rata-rata, mahasiswa diharuskan membuat formula perhitungan rerata sendiri. Jika siswa mampu mengikuti perkuliahan ini, dipastikan mampu berfikir logis. Namun ketika lulus harus cepat beradaptasi dengan bahasa-bahasa baru yang digunakan industri. Dosen dengan style ini sangat mengharamkan Matlab maupun OpenCV dalam pembelajaran. Saya sendiri sempat mempraktikan metode ini hanya untuk materi dasar seperti algoritma dan pemrograman. Itu pun mahasiswa agak kesulitan.

Dosen-dosen generasi 2000-an kebanyakan saat ini menggunakan bahasa Python. Saat ini Google mempermudah orang belajar Python karena menyediakan fasilitas “Google Colab”, yaitu pemrograman via browser. Mahasiswa tidak perlu menginstal Python, tinggal langsung mengetik http://colab.research.google.com maka langsung terhubung ke Google Colab. Bahkan Google menggratiskan GPU-nya untuk digunakan. Mungkin dosen-dosen senior agak keberatan karena dalam Python banyak fungsi-fungsi “instan” yang tidak mendidik para mahasiswa dalam memrogram tetapi dari diskusi-diskusi sesama pengguna banyak informasi-informasi mengenai struktur logika suatu fungsi tertentu. Pembuat fungsi/library pun menyediakan kode sumber yang dapat dilihat di situs resminya. Selain itu, sumber file dapat dilihat isinya misalnya salah satu fungsi m-file dalam Matlab yang bisa dilihat kode sumbernya. Tentu saja jika siswa diharuskan membuat dari “nol” agak berat, khususnya materi-materi yang melibatkan banyak komputasi seperti model-model deep learning. Ada baiknya mengikut perkuliahan Massachusetts Institute of Technology (MIT) yang mengharuskan mahasiswa memahami struktrur program yang dia ketik. Tentu saja fungsi-fungsi tertentu seperti rata-rata, standar deviasi, dan sejenisnya dianggap siswa sudah memahaminya, terkadang tidak perlu mengkode ulang.

Share Kode (Github, Google Colab, dll)

Saat ini siswa mudah sekali mempelajari satu metode karena sudah banyak yang men-share kode sumber yang merupakan proyek risetnya. Termasuk buku-buku teks pun ikut juga men-share kode2nya, sekaligus promosi buku yang dijualnya. Kode-kode tersebut sangat membantu memahami konsep-konsep dasar komputasi, machine learning, data mining, dan sejenisnya karena langsung terlihat nyata. Hanya saja beberapa problem harus diselesaikan terkait kompatibilitas versi bahasa pemrograman, misalnya Google Colab yang menggunakan versi terkini Python dan library-library nya, seperti diskusi berikut ini.

Deteksi Tepi dengan Open CV

Beberapa aplikasi baik di laptop maupun di handphone menerapkan deteksi tepi untuk memisahkan antara citra dengan latar/background-nya. Salah satu metode deteksi tepi yang terkenal adalan metode Canny yang menerapkan filter Gauss:

Beberapa aplikasi telah menerapkan metode Canny ini, misalnya Matlab dan OpenCV. Postingan ini mencoba menggunakan OpenCV yang bekerja di Google Colab dengan bahasa Python. Seperti biasa, buka Google Colab.

  • import cv2
  • import numpy as np
  • from matplotlib import pyplot as plt
  • # read image
  • img = cv2.imread(“dimas.jpg”0)
  • # Find edge with Canny edge detection
  • edges = cv2.Canny(img, 100200)
  • # display results
  • plt.subplot(121), plt.imshow(img, cmap=‘gray’)
  • plt.title(‘Original Image’), plt.xticks([]), plt.yticks([])
  • plt.subplot(122), plt.imshow(edges, cmap=‘gray’)
  • plt.title(‘Edge Image’), plt.xticks([]), plt.yticks([])
  • plt.show()

Open CV diimpor terlebih dahulu, termasuk numpy dan pyplot untuk pengolahan matriks dan pembuatan grafik. Variabel “img” mengambil nama file citra yang terlebih dahulu diupload ke Google Colab. Ketika sel di-run pastikan tampil hasilnya.

Atau bisa menggunakan cv2_imshow agar lebih besar gambar yang ditambilkan.

  • from google.colab.patches import cv2_imshow
  • cv2_imshow(edges)

Silahkan lihat video tutorial di akhir postingan ini. Sekian, semoga bermanfaat.

Konversi Huruf Besar dan Huruf Kecil Pada Python (Google Colab)

Untuk mengolah teks diperlukan proses konversi ke huruf kecil semua sebelum diolah lebih lanjut seperti stemming, pencarian kata dasar, dan operasi pada teks lainnya. Gunakan sembarang file txt untuk praktek yang diunggah ke Google Colab.

  • f2 = open(‘Praktek.txt’‘r’)
  • content = f2.read()
  • print(content)

Perhatikan di sini fungsi open memiliki parameter ‘r’ yang berbeda dengan post yang lalu (tanpa parameter ‘r’). Di sini ketika berganti baris, teks tidak ditulis dalam kode \n melainkan berganti baris.

Gunakan fungsi “upper” atau “lower” untuk beruturut-turut merabah seluruh teks menjadi huruf besar atau huruf kecil semua.

  • content.upper()

Sebagai penutup, ada satu fungsi split untuk memisah teks tersebut menjadi kata per kata ke bawah dengan kode sebagai berikut.

  • list_ = open(“Praktek.txt”).read().split()
  • list_

Ini merupakan teknik menghitung berapa jumlah kata yang ada dalam satu paragraph.

Untuk lebih jelasnya simak video berikut ini:

Mencoba OpenCV di Google Colab

Python memiliki beragam library. Salah satu library terkenal untuk pengolahan citra (image processing) adalah OpenCV (https://opencv.org/). Untuk mencoba library ini silahkan buka Google Colab (http://colab.research.google.com) di browser kita.

Instalasi OpenCV

Untuk menginstal OpenCV, gunakan PIP dengan disertai simbol “!” di depan cell Google Colab sebagai berikut. Setelah itu tekan simbol run di sebelah kiri sel tersebut.

! pip install opencv-python

Tunggu beberapa saat menunggu Google Colab selesai menginstall OpenCV.

Import Library OpenCV

Tidak serta merta ketika diinstal OpenCV dapat langsung digunakan. Import terlebih dahulu. Gunakan satu sel baru agar lebih mudah men-debug nya.

  • import os
  • import numpy as np
  • import matplotlib.pyplot as plt
  • import cv2

Tekan run dan pastikan tidak ada kesalahan. Di sini numpy dan matplotlib merupakan library untuk pengolahan matriks dan plotting. Nah, cv2 di sini merupakan OpenCV.

Membaca, Menampilkan, dan Konversi Citra

Berikutnya kita berlatih menggunakan fungsi OpenCV antara lain, membaca, menampilkan, dan mengkonversi ke hitam putih sebuah citra. Pada google colab upload image sembarang (berformat jpg/png). Tekan terlebih dulu simbol folder di sebelah kiri Google Colab kita.

  • from google.colab.patches import cv2_imshow  
  • img = cv2.imread(‘Rahmadya.jpg’, cv2.IMREAD_UNCHANGED)
  • cv2_imshow(img)
  • grayImg = cv2.cvtColor(np.array(img),cv2.COLOR_BGR2GRAY);
  • cv2_imshow(grayImg)

Kode di baris atas menambahkan satu patches karena cv.imshow tidak berjalan di Google Colab maupun Jupyter Notebook. Variabel img merupakan citra asli, sementara grayImg yang sudah dikonversi ke hitam putih (gray). Perhatikan di OpenCV formatnya Blue-Green-Red (BGR), bukan RGB.

Plotting

Selain dengan OpenCV, ada baiknya kita belajar menampilkan dalam bentuk Plot karena lebih rapih. Gunakan kode berikut di sel yang baru.

  • plt.subplot(121), plt.imshow(img), plt.title(“Original”)
  • plt.xticks([]), plt.yticks([])
  • plt.subplot(122), plt.imshow(grayImg), plt.title(“Edited”)
  • plt.xticks([]), plt.yticks([])
  • plt.show()

Pastikan program berjalan dengan baik.

Silahkan kunjungi video tutorial ini untuk lebih jelasnya.