Membuat Program Fuzzy Dengan Python. Studi Kasus: Prediksi Penyakit Demam
Ketika kita ingin mengetahui jenis kelamin seseorang, kita dengan cukup mudah mengenalinya dengan seksama. Mulai dari bentuk tubuhnya, suara, atau pakainnya.
"Oh kalo pake rok, sudah pasti perempuan!"
"Di lehernya ada jakun. Orang itu sudah pastu laki laki!"
Ini merupakan prediksi sederhana ketika kita ingin mengenali gender seseorang. Dan kita 'lumrah'-nya mengenali ada dua gender, yaitu laki laki dan perempuan.
Pilihannya pun mudah. Hanya ada dua. Laki laki atau perempuan. 0 atau 1
Untuk case yang lain contohnya adalah ketika kita melihat daftar nilai nilai teman teman kita. Ada status lulus dan tidak lulus. Status tersebut memiliki dua nilai yang memberikan keterangan apakah orang tersebut lulus atau tidak lulus. Biasanya nilai ini diwakilkan sebagai nilai
Pertanyaannya. Bagaimana jika kita ingin menentukan sesuatu yang jelas berada antara lulus dan tidak lulus. Atau banjir dan tidak banjir. atau demam dan tidak demam? Tentu sulit bukan
Apakah disebut banjir itu? Apakah jika air setinggi mata kaki sudah berarti banjir? Atau kah banjir disebut banjir jika air sudah melebihi perut orang dewasa?
Nahhh, di saat seperti itu lah kita membutuhkan sebuah teknologi bernama Logika Fuzzy
Apa Itu Logika Fuzzy?
Menurut Binus University School Of Computer Science, Logika Fuzzy adalah suatu cara yang tepat untuk memetakan suatu ruang input ke dalam ruang output. Untuk sistem yang sangat rumit, penggunaan logika fuzzy (fuzzy logic) adalah salah satu pemecahannya. Sistem tradisional dirancang untuk mengontrol keluaran tunggal yang berasal dari beberapa masukan yang tidak saling berhubungan
Intinya adalah kita diminta untuk memberikan output yang menjelaskan seberapa jauh sebuah diagnosis yang tak bisa digambarkan hanya 'ya' dan 'tidak' namun ia harus memiliki nilai rentang antar 0 dan 1
Dengan mengetahu rentan nilai tersebut, kita bisa menginterpretasikannya lebih lanjut
Baca Juga: GuntingKertasAI, Model Machine Learning Untuk Memprediksi Gambar Gunting-Kertas-Batu
Misal:
Menurut program fuzzy, prediksi ia mengidap demam menurut suhu tubuh yang diketahui adalah 0.4. Apakah ia terkena demam? Nah disinilah interpretasi kita bekerja. Ohhh, ternyata ia terkena demam, namun masih bisa diatasi/diobati/ditangani dengan cara cara khusus, tidak separah dengan orang yang memiiki hasil prediksi demam hingga 0.9/0.83
Rumus Yang Digunakan
Ada tiga jenis logika fuzzy. Yaitu,
- Linear
- Segitiga
- Trapesium
Namun pada case kali ini kita akan menggunakan logika Fuzzy tipe Linear. Karena menurut saya ini yang paling mudah.
Tapi tenang kalo kalian udah faham logika fuzzy tipe linear, harusnya kalian juga bisa dengan tipe tipe yang lain
Rumus Logika Fuzzy: Linear
kurva fuzzy linear |
Ketika kalian liat kurva diatas, plis jangan pusing dulu ya. Kita akan mencoba memahaminya satu persatu
u(x) merupakan fungsi output yang berada pada sumbu y. Ia akan mengeluarkan nilai prediksi berdasarkan nilai masukkan a dan b pada sumbu x
a merupakan nilai masukkan yang menjadi parameter untuk memutuskan prediksi
sedangkan b merupakan nilai tertinggi yang menjadi rentan dari nilai a untuk menjadikan acuan prediksi
Intinya a dan b merupakan sebuah rentan nilai. a hingga b, 3 hingga 5. Tergantung soal cerita yang diberikan nanti
fungsi keanggotaan |
Gambar di atas lebih tepatnya adalah sebuah pengkondisian. Jika nilai x dibawah atau sama dengan nilai a, maka kita akan memberikan output APA
Sedangkan jika nilai x lebih besar atau lebih kecil dan sama dengan a atau b maka x dikurangi a dibagi dengan b dikurangi a
Jika, nilai x lebih besar dan sama dengan nilai b makan akan memberikan nilai APA
Baca Juga: Cara Mengubah Isi Teks Menjadi Dictionary Dengan Python
Soal:
Diana memiliki suhu tubuh 37.2 derajat celcius. Ia memutuskan untuk berobat kepada dokter. Sesuai dengan petunjuk dokter, suhu tubuh seseorang dengan 36 derajat celcius adalah normal. Sedangkan suhu tubuh 38 derajat celcius merupakan demam tinggi. Kira kira, apakah Diana terkena demam?
Diketahui:
- Suhu Demam Diana: 37.2 (x)
- Suhu Tubuh Normal: 36 (a)
- Suhu Tubuh Demam: 38 (b)
Suhu demam Diana merupakan nilai x, apakah suhu tubuh diana kurang dari a? Tidak. Apakah lebih dari b? Tidak. Suhu tubuh Diana berada di antara nilai a dan b. Sehingga kita harus menghitungnya sesuai dengan rumus diatas
37.2 - 36 / 38 - 36
Hasilnya: 0.6
Setelah kita mengetahui cara kerja dari rumus ini. Mari kita terjemahkan menjadi code berbahasa python
Code
Requiredments:
- Pastikan kalian sudah menginstall Python 3.9.7
Pastikan kalian sudah memiliki pip
Install tkinter
tkinter merupakan library python yang berfungsi memberikan tampilan GUI pada aplikasi kita. Penggunaannya pun relatif mudah jika kalian berpengalaman menulis html. Cara menggunakannya adalah dengan kalian menulis perintah di bawah ini untuk menginstallnya
pip install tkinter
Lalu masukkan kode dibawah ini untuk mengimport tkinter ke dalam aplikasi kalian
from tkinter import *
from tkinter import ttk
Buat Fungsi untuk menghitung logika fuzzy
Mungkin kalian mengalami error mengapa meters tidak terdefinisi. Kita akan membuatnya di dalam program tkinter kita dibawah
Buat program GUI dari library tkinter
Atau kalian bisa melihat sourcecode dari Github saya (jangan lupa untuk memberikan Star)
Jalankan Aplikasi
Kalian bisa masukkan perintah py nama-file-kalian.py atau klik Run di VSCode
Sumber/Referensi
https://www.kitainformatika.com/2020/11/fungsi-keanggotaan-fuzzy-kurva-linear.html
Sourcecode: https://github.com/yasyaindra/fuzzy-fever-py
Comments
Post a Comment