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

Popular posts from this blog

Cara Mengatasi Hang/Freeze Pada Laptop Asus TUF Gaming

Cara Menjalankan PHP 8 & Laravel 9 Pada Laragon

Tutorial NextJS 13 & Typescript: Membuat Navbar Dengan Shadcn/UI