January 25, 2017

Membuat Pendeteksi Gender (Pria/Wanita) dengan Python

Saya menghabiskan sebagian dari libur semester awal tahun 2017 untuk belajar bahasa pemrograman interpreter Python. Awalnya tertarik untuk membuat sebuah machine learning sederhana yang dapat dilatih, hasil pencarian banyak menganjurkan untuk menggunakan bahasa pemrograman Python.

Setelah belajar dasar dan cara kerja Python akhirnya untuk prakteknya kasus pertama yang saya ambil adalah pendeteksi gender pria atau wanita dari karakter masing-masing dengan bantuan tutorial sana-sini. Pendeteksi ini menggunakan metode Decision Tree.

Decision Tree
Bagi yang belum familiar dengan metode Decision Tree, sederhananya metode ini adalah metode klasifikasi untuk mendapatkan kesimpulan dari sebuah data. Proses kerjanya mirip dengan logika IF-THEN. Sebagai gambaran cara kerja Decision Tree, sebuah ilustrasidari Dr. Saed Sayad berikut dapat membantu:

Ilustrasi decision tree (source: http://www.saedsayad.com/decision_tree.htm)

Logika Decision Tree dapat di latih dengan mengajarkan pola tertentu dari sejumlah dataset untuk membuat keputusan baru, input baru kemudian di analisa untuk mencari pola tertentu sesuai dengan training sebelumnya untuk menghasilkan sebuah pengetahuan yang dapat menentukan kesimpulan untuk data input baru.

Kasus Pendeteksi Pria atu Wanita
Pada kasus ini, data training yang kita gunakan merupakan data karakter tinggi, berat dan ukuran sepatu dari pria dan wanita. Dengan sejumlah dataset training, Decision Tree akan membuat analisa pola karakter dari masing-masing gender agar jika ada input data karakter baru aplikasi dapat menentukan data input tersebut meruapakan karakter dari seorang pria atau wanita.

Cara Membuat
Pada Python, terdapat paket yang telah menyediakan metode decision tree untuk dapat digunakan. Paket ini disimpan dalam paket scikit-learn. Untuk dapat menggunakan scikit-learn terdapat 2 buah paket dependesi lain yang di butuhkan, yaitu numpy dan scipy. Paket-paket ini dapat di install dengan menggunakan perintah #pip install [paket] melalui terminal/cmd. Secara umum installasi paket sebagai berikut:
  1. #pip install numpy
  2. #pip install scipy
  3. #pip install -U scikit-learn

Bagi yang menemukan kendala dalam penginstalan paket tersebut, khususnya pengguna windows, beberapa turial berikut bisa membantu:
  1. Melalui Miniconda: https://www.youtube.com/watch?v=pENBnsSCZm8
  2. Install Executable: https://www.youtube.com/watch?v=-llHYUMH9Dg

Coding
Secara sederhana coding untuk aplikasi ini dapat dilakukan pada satu file saja, buat file dengan nama demo.py, dengan isi:
from sklearn import tree # import scikit-learn untuk decision tree

# sample data format [tinggi, berat, ukuran-sepatu]
# data ukuran dari 11 orang
data = [[181,80,44], [177,70,43], [160,60,38], [154,54,37], 
  [166,65,40], [190,90,47], [175,64,39], [165,49,40],
  [171,75,42], [157,55,39], [181,85,43],]

# data gender,berurut sesuai dengan datanya (merujuk variabel data)
gender = ['pria', 'pria', 'wanita', 'wanita', 
   'wanita', 'pria', 'pria', 'wanita', 
   'pria', 'wanita', 'pria',]

# memanggil metode DecisionTreeClassifier() dari onjek tree
klasifikasi = tree.DecisionTreeClassifier()
# training data, memanggil metode fit(param), param = data dan gender
klasifikasi = klasifikasi.fit(data,gender)

# memasukkan data baru untuk di prediksi
# memanggil metode predict([data])
databaru = [170,59,41]
prediksi = klasifikasi.predict([databaru])

# print hasil prediksi
print(data)
# print(type(data))
print(prediksi)

Terdapat beberapa bagian penting dari kode diatas:
  • Pertama kita memanggil paket yang akan digunakan yaitu scikit-learn dengan from sklearn import tree
  • Memuat data karakter gender pada variabel data
  • memuat pasangan karakter gender pada variabel gender
  • Melalukan training data dengan:
    # memanggil metode DecisionTreeClassifier() dari onjek tree
    klasifikasi = tree.DecisionTreeClassifier()
    # training data, memanggil metode fit(param), param = data dan gender
    klasifikasi = klasifikasi.fit(data,gender)
    
  • Mengimput data baru untuk di prediksi:
    # memasukkan data baru untuk di prediksi
    # memanggil metode predict([data])
    databaru = [170,59,41]
    prediksi = klasifikasi.predict([databaru])
    
  • kemudian memprint hasilnya dengan perintah print

Hasil
Hasil running aplikasi melalui Command Prompt

Cara diatas adalah salah satu jalan untuk membuat pendeteksi pria-wanita sederhana dengan input karakter masing-masing. Untuk kasus berbeda, dimana dataset berada pada file .csv atau .txt, saya melakukan sedikit modifikasi dimana dataset harus di import dan di parse terlebih dahalu yang dapat dilihat pada full coding dari project ini pada Github:
Github Projecthttps://github.com/yasirutomo/mini-project-python/tree/master/deteksi-gender

Jika ada yang memiliki ide atau pertanyaan mengenai project ini beritahu saya melalui komentar Anda.

Artikel Terkait

Membuat Pendeteksi Gender (Pria/Wanita) dengan Python
4/ 5
Oleh

Berlangganan

Suka dengan artikel di atas? Silakan berlangganan gratis via email

Tambahkan Komentar Anda