Tree Rule-Based
Tree Rule-Based adalah metode pembuatan aturan (rules) yang bentuknya seperti pohon keputusan (decision tree).
Pada dasarnya, sistem akan mengambil keputusan berdasarkan serangkaian aturan IF–THEN yang bercabang seperti pohon.pada kesempatan kali ini, kita akan melakukan pembahasan dan praktek mengenai Tree Ruled-Based dengan menggunaakan bahasa pemograman Python, Studi Kasus yang kita pakai yaitu
Penentuan Resiko Cuaca
Penentuan Resiko Cuaca
Kita akan menggunakan konsep OOP dasar untuk programnya.
Pertama - tama kita buat dulu untuk design rule nya, Disini kita sudah menyiapkan treenya.
Setelah kita dapat gambar apa yang kita buat, selanjutnya kita mulai untuk pemrogramnya
1. Buat file Tree1.py
class Node:
def __init__(self, question=None, ya_node=None, tidak_node=None, hasil=None):
self.question = question
self.ya_node = ya_node
self.tidak_node = tidak_node
self.hasil = hasil
* question
Tipe: string
Fungsi: Menyimpan pertanyaan pada node decision.
Contoh: "hujan", "angin_kencang"
* ya_node
Tipe: Node
Fungsi: Menunjuk ke node berikutnya jika jawaban = "Ya".
* tidak_node
Tipe: Node
Fungsi: Menunjuk ke node berikutnya jika jawaban = "Tidak".
* hasil
Tipe: string
Fungsi: Menyimpan hasil akhir (kesimpulan).
Hanya digunakan jika node adalah leaf.
Contoh: "Bahaya", "Waspada", "Aman"
* kesimpulan
Tipe: boolean
Fungsi: Penanda apakah node ini adalah akhir pohon (leaf).
Jika True, node dianggap end node, traversal berhenti.
3. Kita bat Class Treenya tepat di bawah Class Node
class Tree:
def __init__(self, root=None):
self.root = root
def evaluate(self, jawaban):
current = self.root
while not current.is_leaf():
pertanyaan = current.question
jawab = jawaban[pertanyaan]
if jawab == "Ya":
current = current.ya_node
else:
current = current.tidak_node
return current.hasil
def print_tree(self, node=None, indent=""):
if node is None:
node = self.root
if node.is_leaf():
print(indent + f"➡ Hasil Akhir: {node.hasil}")
else:
print(indent + f"[Q] {node.question}?")
print(indent + " ├── Ya →")
self.print_tree(node.ya_node, indent + " │ ")
print(indent + " └── Tidak →")
self.print_tree(node.tidak_node, indent + " ")
node_bahaya = Node(hasil="Bahaya", kesimpulan=True)
node_waspada = Node(hasil="Waspada", kesimpulan=True)
node_aman = Node(hasil="Aman", kesimpulan=True)
L4_A = Node(question="angin_ke_darat", ya_node=node_bahaya, tidak_node=node_waspada)
L4_B = Node(question="angin_ke_darat", ya_node=node_waspada, tidak_node=node_waspada)
L4_C = Node(question="angin_ke_darat", ya_node=node_waspada, tidak_node=node_aman)
L3_A = Node(question="lembab_tinggi", ya_node=L4_A, tidak_node=L4_B)
L3_B = Node(question="lembab_tinggi", ya_node=node_waspada, tidak_node=node_aman)
L2_A = Node(question="suhu_panas", ya_node=L3_A, tidak_node=node_waspada)
L2_B = Node(question="suhu_panas", ya_node=L3_B, tidak_node=node_aman)
root = Node(
question="hujan",
ya_node=Node(question="angin_kencang", ya_node=L2_A, tidak_node=node_waspada),
tidak_node=Node(question="angin_kencang", ya_node=node_waspada, tidak_node=L2_B)
)
decision_tree = Tree(root=root)
jawaban1 = {
"hujan": "Ya",
"angin_kencang": "Ya",
"suhu_panas": "Ya",
"lembab_tinggi": "Ya",
"angin_ke_darat": "Ya"
}
jawaban2 = {
"hujan": "Tidak",
"angin_kencang": "Tidak",
"suhu_panas": "Ya",
"lembab_tinggi": "Tidak",
"angin_ke_darat": "Tidak"
}
print("Hasil 1:", decision_tree.evaluate(jawaban1))
print("Hasil 2:", decision_tree.evaluate(jawaban2))
print("\n--- Struktur Tree ---")
decision_tree.print_tree()
Dari Kode Diatas, Ada banyak jenis node dan variabelnya,
Jika sudah sampai kesimpulan maka program akan berhenti dan menampilkan hasil dari Tree rule based
4. Hasil Output nya
Berikut adalah hasil dari program yang telah kita buat.

Komentar
Posting Komentar