Keahlian Pemrograman Python untuk Mulai Belajar Machine Learning

Halo Teman-teman!


Tulisan ini adalah bagian kedua dari seri yang membahas tentang apa saja keahlian yang dibutuhkan untuk mulai belajar tentang Machine Learning, kali ini kita membahas tentang pemrograman Python.


Jangan lupa cek juga artikel lainnya dalam seri ini:

  1. Keahlian Matematika untuk Mulai Belajar Machine Learning


[[table-content]]


Ada banyak bahasa pemrograman yang memiliki dukungan pustaka Machine Learning, tidak hanya Python, misalnya Julia dan R. Tapi memang Python adalah salah satu bahasa pemrograman terfavorit yang dipilih oleh peneliti dan praktisi untuk implementasi Machine Learning.


Buat teman-teman yang belum pernah cek ⚡ kelas belajar Python di Sekolah Koding ⚡, buruan cek dulu, ada banyak materi mulai dari dasar, pembuatan web, dan masih banyak lagi..


Sebelum kita mulai membahas sejumlah hal penting yang perlu dipelajari dalam pemrograman Python sebagai dasar untuk bisa melanjutkan belajar Machine Learning, beberapa panduan dalam membaca dan mengikuti tulisan ini:

  • Versi Python yang digunakan adalah python3, misalnya versi 3.6 atau yang lebih baru.
  • Dalam contoh kode, jika barisnya dimulai dengan tanda # artinya baris tersebut adalah komentar (informasi saja), bisa diabaikan dalam pengetikan kode.
  • Hal paling penting dalam penulisan kode pemrograman adalah ketelitian, di pemrograman Python, gunakan indentasi dengan teliti.


Tipe Data di Python


Selain tipe data dasar seperti angka (int, double), teks (str), dan boolean (bool), sejumlah tipe data lainnya yang tidak kalah penting antara lain:


List

Dalam bahasa Indonesia kita menyebutnya sebagai daftar, karena ya tipe data ini bisa berisi sekumpulan tipe data lain, bahkan berisi tipe data List itu sendiri.

List menggunakan notasi kurung kotak [] atau dalam bahasa Inggris square brackets atau brackets aja.

Di beberapa bahasa pemrograman lain disebut juga dengan istilah array.


# daftar yang isinya berjenis sama
daftar_buah = ['apel', 'belimbing', 'cempedak', 'durian']
daftar_nomor_anggota = [11, 22, 37]
daftar_kehadiran = [True, False, True]

print('buah-buahan: {}' \
    .format(', '.join(daftar_buah)))
# buah-buahan: apel, belimbing, cempedak, durian

# daftar yang lebih kompleks
daftar_tipe = \
    ['str', 'teks', 'int', 1, 'double', 0.1, \
     'boolean', False, 'List', ['L', 'i', 's', 't']]


Dictionary

Kita menyebutnya juga sebagai kamus, karena berisi daftar unik yang disebut sebagai kunci (key), yang juga punya nilai (value) yang terkait.

Dictionary menggunakan notasi kurung kurawal {} atau dalam bahasa Inggris curly brackets atau braces aja.

Di beberapa bahasa pemrogaman lain disebut juga dengan istilah map atau hash-map.


# daftar kata pada suatu halaman dengan jumlah kemunculan
kamus_kata = {'antara': 5, 'berarti': 3, 'cerita': 2, 'di': 7}

# daftar ID dan nama pengguna
kamus_pengguna = {1: 'andi', 2: 'budi', 3: 'cica', 4: 'dedi'}

print('pengguna dengan ID 1 adalah {}' \
    .format(kamus_pengguna[1]))
# pengguna dengan ID 1 adalah andi

# gabungan List dengan Dictionary
daftar_pengguna = \
    [{'id': 1, 'nama': 'andi'}, {'id': 2, 'nama': 'budi'}]


Pemrosesan Kondisi


Satu Kondisi (if)

Untuk menyeleksi jika ada kondisi tertentu gunakan sintaksis if.


# contoh variabel bertipe boolean nilai True atau False
pencarian_ditemukan = True

# misal di sini ada proses (pemanggilan fungsi) lain

# kondisi saat melakukan pencarian
if pencarian_ditemukan:
    info = 'Data yang dicari berhasil ditemukan'


Dua Kondisi (if-else)

Banyak hal juga berupa kondisi ganda, misalnya ditemukan atau tidak ditemukan, genap atau ganjil, dls, untuk itu gunakan sintaksis if .. else ..


# masih terkait contoh sebelumnya tentang pencarian

# misalnya pemrosesan mengembalikan pencarian gagal
pencarian_ditemukan = False

if pencarian_ditemukan:
    info = 'Data yang dicari berhasil ditemukan'
else:
    info = 'Data yang dicari tidak ada'


Lebih dari Dua Kondisi (if-elif-else)

Tentunya juga tidak sedikit yang membutuhkan evaluasi banyak kondisi, misalnya hari, bulan, dls, untuk itu gunakan sintaksis if .. elif .. else ..


# memroses analisis sentimen berdasarkan rating

if rating in [1, 2]:
    sentimen = 'Negatif'
elif rating == 5:
    sentimen = 'Positif'
else:  # [3, 4]
    sentimen = 'Netral'


Pengulangan


Dalam perosesan data, kita akan menggunakan pengulangan untuk memroses data yang berurutan (sequence) atau data yang perlu diiterasi.


Pengulangan dengan sintaksis for


Sejumlah tipe yang berjenis urutan (sequence), bisa diproses iterasi dengan mudah menggunakan pengulangan for. Contoh tipe yang merupakan urutan: str, list, tuple, dict.


# mengambil konstanta punctuation (tanda baca)
from string import punctuation
print(punctuation)  # !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

for p in punctuation:
    print(p)


Contoh lain untuk melakukan iterasi pada tipe dict.


# daftar ID dan nama pengguna
kamus_pengguna = {1: 'andi', 2: 'budi', 3: 'cica', 4: 'dedi'}

for k, v in kamus_pengguna.items():
    print('ID {} bernama {}'.format(k, v))


Pengulangan dengan kondisi


Kadang kita perlu untuk melakukan iterasi sampai suatu kondisi terpenuhi, misalnya melakukan pencarian, maka proses iterasi akan berlangsung terus sampai pencariannya ketemu atau ya sampai semua sudah diiterasi tapi tidak ketemu.


belum_ketemu = True  # inisialisasi sebagai belum ketemu

# pengulangan dengan kondisi asal belum ketemu
while belum_ketemu:
    # cari (proses) terus ketika masih belum ketemu
    hasil = sebuah_fungsi_pencarian()

    if hasil == 'sesuai harapan':
        belum_ketemu = False  # tidak lanjut iterasi lagi


Menggunakan dan Membuat Fungsi/Prosedur


Di atas kita sudah sempat menggunakan fungsi print() untuk mencetak ke layar. Tidak semua fungsi bisa langsung dipanggil seperti halnya print(), ada fungsi yang butuh kita ambil dulu dari modulnya.


Sebagai contoh kita perlu menggunakan fungsi matematika logaritma, tentu akan merepotkan sekali kalo kita harus membuat sendiri fungsinya. Maka kita menggunakan modul math yang sudah disediakan oleh Python, untuk menggunakan sejumlah fungsi matematika seperti log(), sqrt(), juga konstanta seperti bilangan natural e dan konstanta pi.


# menggunakan fungsi dan konstanta dari modul math
from math import log, sqrt, e

print('log(1) adalah {}'.format(log(1, 10)))  # base 10
# log(1) adalah 0.0
print('ln(e) adalah {}'.format(log(e)))  # base e
# ln(e) adalah 1.0
print('akar kuadrat dari 9 adalah {}'.format(sqrt(9)))
# akar kuadrat dari 9 adalah 3.0


Pada kondisi tertentu, misalnya menghindari circular-import (kondisi dimana dua berkas saling mengimpor), kita bisa menggunakan command import saja seperti berikut.


# menggunakan konstanta pi dari modul math
import math
jarijari = 10

# penggunaannya tidak bisa langsung pi tapi math.pi
print('lingkaran dengan jari-jari 10, luasnya {}'\
    .format(math.pi*jarijari*jarijari))
# lingkaran dengan jari-jari 10, luasnya 314.1592653589793


Bayangkan kalo kita ingin menghitung 3 buah lingkaran dengan nilai jari-jari yang berbeda-beda, kemudian kita perlu mengulang-ulang lagi memasukkan instruksi di atas, tentu akan melelahkan. Tapi dengan membungkusnya menjadi sebuah fungsi, kita cukup menuliskannya satu kali, lalu tinggal memanggilnya berulang-ulang kali.


Pembuatan fungsi/prosedur itu menggunakan sintaksis def seperti dicontohkan berikut. (catatan: prosedur itu sebuah fungsi yang tidak mengembalikan nilai)

from math import pi
# prosedur hitung luas lingkaran lalu cetak ke layar
def cetak_layar_luas_lingkaran(jarijari):
    print('lingkaran dengan jari-jari {}, luasnya {}'\
        .format(jarijari, pi*jarijari*jarijari))


Lalu pemanggilannya seperti ini (yang diberikan nilainya ke fungsi disebut masukan atau input argumen, di bawah ini menggunakan argumen posisi).

cetak_layar_luas_lingkaran(10)
# lingkaran dengan jari-jari 10, luasnya 314.1592653589793
cetak_layar_luas_lingkaran(100)
# lingkaran dengan jari-jari 100, luasnya 31415.926535897932


Gimana agar prosedur yang sudah kita buat di atas, bisa menjadi fungsi, jadi mengembalikan nilai? Agar bisa digunakan dalam sebuah perhitungan. Caranya adalah menggunakan sintaksis return.


# fungsi hitung luas persegi panjang dan kembalikan nilainya
def luas_persegi_panjang(panjang, lebar):
    luas = panjang * lebar
    return luas

# pemanggilannya dengan menggunakan position argument
luas10x20 = luas_persegi_panjang(10, 20)
# pemanggilannya dengan menggunakan keyword argument
luas30x40 = luas_persegi_panjang(panjang=30, lebar=40)

print('luas tanah 10 x 20 adalah {}'.format(luas10x20))


Menggunakan Pustaka Dukungan


Pembahasan sebelum ini hanya terkait fungsi dan modul yang sudah bawaan dalam Python, tapi seringnya kita membutuhkan fungsi yang lebih luas lagi, termasuk juga untuk Machine Learning dan Deep Learning. Di situlah kita membutuhkan package manager yang memudahkan kita melakukan instalasi, memperbarui paket, hingga menghapus paket tersebut dari komputer.


Salah satu package manager yang memiliki koleksi hingga ratusan ribu ragam paket adalah pip, semuanya bisa kita gunakan dengan syarat perlu terhubung ke internet saat mengoperasikannya. Saat melakukan instalasi Python, aktifkan juga package manager pip, sehingga berikutnya punya perintah pip di command prompt/console.


# perintah pip dioperasikan di command prompt windows
C:\> pip freeze


# perintah pip dioperasikan di console (shell) linux/macos
$ pip list


Untuk berikutnya, hanya akan dituliskan perintah pip dan argumennya saja, tanpa prompt di windows/linux/macos. Beberapa perintah penggunaan pip:


# paket scikit-learn: salah satu pustaka Machine Learning
# proses instalasi scikit-learn, termasuk instalasi
# paket numpy dan scipy sebagai dependensinya
# perintah instalasi scikit-learn
pip install scikit-learn

# misal sudah terinstall paket pandas tapi perlu update
# perintah upgrade paket pandas ke versi paling baru
pip install --upgrade pandas

# misal sudah terinstall paket six tapi tidak dipakai
# perintah untuk hapus paket six
pip uninstall six


Numpy


Numpy adalah pustaka untuk pemrosesan numeric dengan efisien.

Jika diperhatikan kembali pembahasan keahlian matematika yang dibutuhkan, maka paket Numpy inilah yang dibutuhkan untuk melengkapi kebutuhan terkait sejumlah fungsi Aljabar Linear. Numpy adalah pustaka yang diakui sebagai standar tipe (lingua franca) untuk interaksi data antar pustaka di Python terkait pemrosesan numerik.


Sebagai contoh, jika dibandingkan dengan mengimplementasi sendiri sebuah vektor dengan seribu atau sejuta elemen menggunakan tipe data list, maka implementasi ndarray Numpy akan jauh lebih efisien sehingga pemrosesannya jauh lebih cepat. ndarray singkatan dari n-dimension array, sebuah tipe data pada Numpy yang efisien untuk penyimpanan dan pemrosesan vektor, matriks dan tensor.


Berikut contoh salah satu fungsi perkalian dot dari 2 matriks:

import numpy as np

# membuat matriks dengan bentuk 2 baris 3 kolom
m = np.array([[1, 2, 3],
              [6, 7, 8]])
print(m)
# [[1 2 3]
#  [6 7 8]]

# membuat matriks identitas 3 (3 baris 3 kolom) tipe int
i = np.identity(3, dtype=int)
print(i)
# [[1 0 0]
#  [0 1 0]
#  [0 0 1]]

# perkalian m dot i, matriks bentuk (2, 3) dot (3, 3)
# kolom dari matriks m = baris dari matriks i
# menghasilkan matriks bentuk (2, 3)
n = np.dot(m, i)
print(n)
# array([[1, 2, 3],
#        [6, 7, 8]])

# sesuai dengan sifat matriks identitas,
# suatu matrix dikalikan dengan matriks identitas
# akan menghasilkan matriks itu sendiri


Di bagian referensi artikel ini, disertakan satu contoh dokumen Google Colab untuk belajar Numpy, bisa langsung akses dan coba kodenya.


Pandas


Pandas adalah pustaka untuk melakukan analisis dan manipulasi data yang efisien.

Aplikasi Machine Learning membutuhkan banyak data untuk menemukan pola dan melatih pengetahuannya untuk menghasilkan model terbaik. Sehingga sebelum kita mulai memrogram Machine Learning kita perlu melakukan eksplorasi data yang dimiliki terlebih dahulu, karena itulah kita membutuhkan pustaka seperti Pandas.


Bayangkan sebuah data yang akan digunakan bukan hanya orde ribuan atau ratusan ribu, bahkan tidak sedikit yang datanya mencapai jutaan. Dalam jumlah data besar seperti itu, kita sulit mengandalkan aplikasi semacam Google Sheet atau Microsoft Excel untuk melakukan analisis.


Di sini tidak akan dibahas lebih detail, sementara gunakan artikel dan video yang bisa ditemukan di mesin pencari, sudah banyak sekali, serta dalam bahasa Indonesia.


Scikit-Learn, PyTorch & TensorFlow


Scikit-Learn, PyTorch & TensorFlow adalah pustaka Machine Learning, dengan berbagai dukungan mulai dari dataset yang bisa langsung digunakan, kemampuan pemrosesan dari komputer pribadi sampai super komputer, hingga ekosistem pendukung yang mengembangkan berbagai layanan terkait.


Scikit-Learn banyak digunakan sebagai pustaka Machine Learning yang berbasis statistik, karena sebelum tahun 2010an, mayoritas pengolahan data Machine Learning berbasis statistik.


Sebaliknya, PyTorch dan TensorFlow adalah pustaka Machine Learning yang berbasis Artifical Neural Network, atau kini lebih sering disebut sebagai Deep Learning. Sejak sekitar 2010an, dimana kemampuan komputasi paralel sudah semakin maju, Deep Learning menjadi pilihan periset maupun praktisi untuk menyelesaikan masalah-masalah yang bisa dipecahkan dengan Machine Learning, berikut daftar kecanggihan (State-of-the-Art) dari Machine Learning.


Tentunya di luar cakupan artikel ini untuk membahas Scikit-Learn, PyTorch & TensorFlow lebih detail, pustaka inilah yang menjadi alat utama yang digunakan sehari-hari oleh peneliti maupun praktisi Machine Learning, sehingga perlu dipelajari secara mendalam bagi yang tertarik memecahkan masalah dengan Machine Learning.


Menggunakan Google Colab untuk Eksplorasi Pemrograman Python


Google Colaboratory bisa diakses di https://colab.research.google.com

adalah salah satu situs yang berbasis Jupyter Notebook, sehingga memudahkan kita untuk mencoba langsung kode pemrograman python, cukup hanya dengan berbekal browser dan koneksi internet. Hampir keseluruhan yang dibutuhkan untuk belajar Machine Learning dan Deep Learning sudah tersedia di Google Colab.


Ini video 3 menit yang menjelaskan fitur Google Colab dari tim TensorFlow.

[[embed]]youtube=inN8seMm7UI[[/embed]]


Di bagian referensi di artikel ini diberikan satu contoh dokumen Google Colab untuk belajar Numpy, bisa langsung akses kodenya. Lakukan proses "save as" sehingga bisa memiliki dokumen itu sendiri jadi bebas untuk mengubah-ubah dan mencobanya.


Sampai di sini pembahasan tentang sejumlah teknik pada pemrograman Python yang bisa digunakan sebagai dasar belajar Machine Learning.


Silakan berikan masukan yaa, ditunggu komentarnya, apakah pembahasannya terlalu susah, atau terlalu mudah..


🔜 Kalo mau lanjut ke bagian terakhir dari seri ini, ada pembahasan keahlian statistika yang digunakan sebagai dari belajar Machine Learning.

🔙 Atau mau mengulangi tentang keahlian matematika yang digunakan untuk dasar utama belajar Machine Learning.


Gambar oleh Flat Icons.


Referensi:

  • Belajar Numpy di Google Colaboratory. 2019. oon arfiandwi. https://bit.ly/mkspynumpy
  • Pengenalan Neural Networks dan Deep Learning. 2020. oon arfiandwi. https://bit.ly/mkspynn


python machine-learning
avatar oonid

Ditulis oleh @oonid

"saya suka matematika. saya belajar dengan cara berbagi."