Pada Percobaan FRBS kali ini data yang digunakan adalah Data uji air dengan format xlsx.
#Load Data uji air
library(readxl)
## Warning: package 'readxl' was built under R version 4.2.3
cmcData <- read_excel(path = "dataujiair.xlsx")
cmcData
## # A tibble: 27 × 4
## PH Kekeruhan TDS Kelayakan
## <dbl> <dbl> <dbl> <dbl>
## 1 4.33 18 119 50
## 2 4.23 2 119 50
## 3 5.48 23 118 50
## 4 6.91 4 241 100
## 5 6.91 18 119 100
## 6 6.97 14 2 100
## 7 7.12 14 6 100
## 8 10.2 19 174 50
## 9 10.0 6 172 50
## 10 6.82 5 119 100
## # … with 17 more rows
FRBS atau Fuzzy Rule-Based System adalah salah satu jenis sistem cerdas yang digunakan dalam pengambilan keputusan. FRBS menggunakan aturan fuzzy untuk merepresentasikan data dan pengambilan keputusan.
Untuk membuat sistem FRBS, pertama-tama perlu dilakukan pembentukan aturan-aturan fuzzy berdasarkan data training yang telah disiapkan. Kemudian, aturan-aturan fuzzy tersebut dijadikan sebagai model untuk sistem cerdas yang akan digunakan dalam pengambilan keputusan.
Data training, testing, validasi, dan research merupakan bagian penting dalam pengembangan model Fuzzy Rule-Based System (FRBS) dan digunakan untuk memastikan keakuratan dan keandalan sistem cerdas yang telah dibuat.
Data training: Data yang digunakan untuk melatih model FRBS. Data training harus mencakup semua kemungkinan nilai variabel input dan output, dan harus diambil secara acak dari data yang tersedia. Tujuan dari data training adalah untuk menghasilkan aturan fuzzy dan parameter-parameter yang optimal pada model FRBS.
Data testing: Data testing digunakan untuk menguji keakuratan model FRBS pada data yang belum pernah dilihat sebelumnya. Data testing harus dipilih secara acak dari data yang tersedia dan harus mencakup semua kemungkinan nilai variabel input. Hasil dari pengujian data testing kemudian dapat digunakan untuk mengevaluasi kinerja model FRBS.
Data validasi: Data validasi digunakan untuk mengevaluasi model FRBS dan memilih parameter-parameter yang optimal. Data validasi dipilih secara acak dari data yang tersedia dan digunakan untuk membandingkan hasil prediksi dengan nilai sebenarnya. Hasil dari pengujian data validasi kemudian dapat digunakan untuk memilih parameter-parameter yang optimal pada model FRBS.
Data research: Data research digunakan untuk mengembangkan model FRBS dan mengevaluasi kinerjanya pada kasus-kasus tertentu. Data research dapat berupa data historis, simulasi, atau data eksperimen. Hasil dari pengujian data research kemudian dapat digunakan untuk memperbaiki model FRBS dan meningkatkan kinerjanya.
Penggunaan data training, testing, validasi, dan research pada FRBS sangat penting untuk memastikan keakuratan dan keandalan sistem cerdas yang telah dibuat. Dengan menggunakan data yang tepat dan metode yang tepat, FRBS dapat menjadi alat yang sangat berguna dalam pengambilan keputusan.
#Pembentukan Data Training
training <- cmcData[1:20,1:4]
#Pembentukan Data Testing
testing <- cmcData[21:nrow(cmcData),1:3]
#Pembentukan Data Validasi
validasi <- cmcData[21:nrow(cmcData),4]
#Pembentukan Data Research
data_research <- cmcData[21:nrow(cmcData),c(1,4)]
training
## # A tibble: 20 × 4
## PH Kekeruhan TDS Kelayakan
## <dbl> <dbl> <dbl> <dbl>
## 1 4.33 18 119 50
## 2 4.23 2 119 50
## 3 5.48 23 118 50
## 4 6.91 4 241 100
## 5 6.91 18 119 100
## 6 6.97 14 2 100
## 7 7.12 14 6 100
## 8 10.2 19 174 50
## 9 10.0 6 172 50
## 10 6.82 5 119 100
## 11 6.63 4 2 100
## 12 7.61 3 42 100
## 13 9.07 21 18 50
## 14 9.11 16 20 50
## 15 6.92 4 69 100
## 16 6.96 4 81 100
## 17 7.6 3 582 50
## 18 7.62 3 40 100
## 19 5.24 14 2 50
## 20 4.19 15 553 50
testing
## # A tibble: 7 × 3
## PH Kekeruhan TDS
## <dbl> <dbl> <dbl>
## 1 8.5 16 28
## 2 7.61 3 62
## 3 6.88 18 184
## 4 4.17 22 506
## 5 6.89 4 601
## 6 7.02 34 121
## 7 10.7 4 242
validasi
## # A tibble: 7 × 1
## Kelayakan
## <dbl>
## 1 100
## 2 100
## 3 100
## 4 50
## 5 50
## 6 50
## 7 50
data_research
## # A tibble: 7 × 2
## PH Kelayakan
## <dbl> <dbl>
## 1 8.5 100
## 2 7.61 100
## 3 6.88 100
## 4 4.17 50
## 5 6.89 50
## 6 7.02 50
## 7 10.7 50
Syntax range.data <- apply(training, 2, range) pada FRBS berfungsi untuk menghitung nilai range dari setiap kolom pada data training.
FRBS menggunakan data training untuk membuat model fuzzy yang berisi aturan-aturan fuzzy dan parameter-parameter yang optimal. Sebelum dilakukan pelatihan pada model FRBS, seringkali dilakukan tahap normalisasi data untuk menghasilkan hasil yang lebih baik. Salah satu cara yang umum digunakan untuk normalisasi data adalah dengan mengubah rentang nilai setiap variabel menjadi [0,1] atau [-1,1].
Langkah pertama dalam normalisasi data adalah dengan menghitung nilai range dari setiap variabel pada data training, yaitu nilai terbesar dikurangi nilai terkecil. Dalam R syntax range.data <- apply(training, 2, range) dapat digunakan untuk menghitung nilai range dari setiap kolom pada data training.
Setelah nilai range dari setiap variabel diperoleh, selanjutnya dapat dilakukan normalisasi data menggunakan formula normalisasi yang sesuai. Setelah data dinormalisasi, data tersebut siap digunakan untuk melatih model FRBS.
## Define interval of data
range.data <-apply(training, 2, range)
range.data
## PH Kekeruhan TDS Kelayakan
## [1,] 4.19 2 2 50
## [2,] 10.17 23 582 100
Dalam FRBS, method.type adalah sebuah parameter yang menentukan metode yang digunakan untuk menentukan bobot pada aturan fuzzy.
WM adalah salah satu metode yang dapat digunakan pada method.type. Singkatan WM sendiri adalah singkatan dari weighted mean. Pada metode ini, bobot setiap aturan fuzzy dihitung berdasarkan nilai keanggotaannya (membership degree) dari setiap variabel input pada aturan tersebut.
Dalam FRBS, metode WM digunakan untuk menghitung bobot pada aturan fuzzy yang memiliki konsekuensi (output) yang berisi nilai kontinu. Setiap bobot pada aturan fuzzy dihitung berdasarkan nilai keanggotaan dari setiap variabel input pada aturan tersebut, serta berdasarkan nilai keanggotaan dari variabel output pada aturan tersebut.
Dengan menggunakan metode WM, FRBS dapat membangun model yang dapat memberikan prediksi yang akurat dan andal pada data yang belum pernah dilihat sebelumnya.
## Set the method and its parameters,
## for example, we use Wang and Mendel's algorithm
method.type <- "WM"
control <- list(num.labels = 15, type.mf = "GAUSSIAN", type.defuz = "WAM",
type.tnorm = "MIN", type.snorm = "MAX", type.implication.func = "ZADEH",
name = "sim-0")
Paket/library frbs digunakan untuk membangun dan mengimplementasikan sistem berbasis logika fuzzy (fuzzy logic) pada bahasa pemrograman R. Dalam paket/library ini, terdapat berbagai jenis fungsi yang dapat digunakan untuk melakukan proses pembuatan model fuzzy dan inferensi fuzzy.
Beberapa contoh fungsi pada paket/library frbs antara lain:
frbs.learn: digunakan untuk mempelajari aturan fuzzy dari data training. frbs.inference: digunakan untuk melakukan inferensi fuzzy pada data uji. frbs.rule: digunakan untuk menampilkan aturan fuzzy yang telah dipelajari. frbs.accuracy: digunakan untuk menghitung akurasi model FRBS pada data uji.
Dengan menggunakan paket/library frbs, pengguna R dapat dengan mudah membuat sistem berbasis logika fuzzy pada data mereka dan mengambil keputusan berdasarkan hasil inferensi fuzzy
library(frbs)
## Warning: package 'frbs' was built under R version 4.2.3
## Learning step: Generate an FRBS model
object.reg <- frbs.learn(training, range.data, method.type, control)
## Predicting step: Predict for newdata
res.test <- predict(object.reg, testing)
## [1] "note: Some of your new data are out of the previously specified range"
## [1] "note: Some of your new data are out of the previously specified range"
## [1] "note: Some of your new data are out of the previously specified range"
## Display the FRBS model
summary(object.reg)
## The name of model: sim-0
## Model was trained using: WM
## The names of attributes: PH Kekeruhan TDS Kelayakan
## The interval of training data:
## PH Kekeruhan TDS Kelayakan
## min 4.19 2 2 50
## max 10.17 23 582 100
## Type of FRBS model:
## [1] "MAMDANI"
## Type of membership functions:
## [1] "GAUSSIAN"
## Type of t-norm method:
## [1] "Standard t-norm (min)"
## Type of s-norm method:
## [1] "Standard s-norm"
## Type of defuzzification technique:
## [1] "Weighted average method"
## Type of implication function:
## [1] "ZADEH"
## The names of linguistic terms on the input variables:
## [1] "v.1_a.1" "v.1_a.2" "v.1_a.3" "v.1_a.4" "v.1_a.5" "v.1_a.6"
## [7] "v.1_a.7" "v.1_a.8" "v.1_a.9" "v.1_a.10" "v.1_a.11" "v.1_a.12"
## [13] "v.1_a.13" "v.1_a.14" "v.1_a.15" "v.2_a.1" "v.2_a.2" "v.2_a.3"
## [19] "v.2_a.4" "v.2_a.5" "v.2_a.6" "v.2_a.7" "v.2_a.8" "v.2_a.9"
## [25] "v.2_a.10" "v.2_a.11" "v.2_a.12" "v.2_a.13" "v.2_a.14" "v.2_a.15"
## [31] "v.3_a.1" "v.3_a.2" "v.3_a.3" "v.3_a.4" "v.3_a.5" "v.3_a.6"
## [37] "v.3_a.7" "v.3_a.8" "v.3_a.9" "v.3_a.10" "v.3_a.11" "v.3_a.12"
## [43] "v.3_a.13" "v.3_a.14" "v.3_a.15"
## The parameter values of membership function on the input variable (normalized):
## v.1_a.1 v.1_a.2 v.1_a.3 v.1_a.4 v.1_a.5 v.1_a.6 v.1_a.7
## [1,] 5.000 5.00000000 5.0000000 5.0000000 5.0000000 5.0000000 5.0000000
## [2,] 0.000 0.07142857 0.1428571 0.2142857 0.2857143 0.3571429 0.4285714
## [3,] 0.025 0.02500000 0.0250000 0.0250000 0.0250000 0.0250000 0.0250000
## [4,] NA NA NA NA NA NA NA
## [5,] NA NA NA NA NA NA NA
## v.1_a.8 v.1_a.9 v.1_a.10 v.1_a.11 v.1_a.12 v.1_a.13 v.1_a.14
## [1,] 5.000 5.0000000 5.0000000 5.0000000 5.0000000 5.0000000 5.0000000
## [2,] 0.500 0.5714286 0.6428571 0.7142857 0.7857143 0.8571429 0.9285714
## [3,] 0.025 0.0250000 0.0250000 0.0250000 0.0250000 0.0250000 0.0250000
## [4,] NA NA NA NA NA NA NA
## [5,] NA NA NA NA NA NA NA
## v.1_a.15 v.2_a.1 v.2_a.2 v.2_a.3 v.2_a.4 v.2_a.5 v.2_a.6
## [1,] 5.000 5.000 5.00000000 5.0000000 5.0000000 5.0000000 5.0000000
## [2,] 1.000 0.000 0.07142857 0.1428571 0.2142857 0.2857143 0.3571429
## [3,] 0.025 0.025 0.02500000 0.0250000 0.0250000 0.0250000 0.0250000
## [4,] NA NA NA NA NA NA NA
## [5,] NA NA NA NA NA NA NA
## v.2_a.7 v.2_a.8 v.2_a.9 v.2_a.10 v.2_a.11 v.2_a.12 v.2_a.13
## [1,] 5.0000000 5.000 5.0000000 5.0000000 5.0000000 5.0000000 5.0000000
## [2,] 0.4285714 0.500 0.5714286 0.6428571 0.7142857 0.7857143 0.8571429
## [3,] 0.0250000 0.025 0.0250000 0.0250000 0.0250000 0.0250000 0.0250000
## [4,] NA NA NA NA NA NA NA
## [5,] NA NA NA NA NA NA NA
## v.2_a.14 v.2_a.15 v.3_a.1 v.3_a.2 v.3_a.3 v.3_a.4 v.3_a.5
## [1,] 5.0000000 5.000 5.000 5.00000000 5.0000000 5.0000000 5.0000000
## [2,] 0.9285714 1.000 0.000 0.07142857 0.1428571 0.2142857 0.2857143
## [3,] 0.0250000 0.025 0.025 0.02500000 0.0250000 0.0250000 0.0250000
## [4,] NA NA NA NA NA NA NA
## [5,] NA NA NA NA NA NA NA
## v.3_a.6 v.3_a.7 v.3_a.8 v.3_a.9 v.3_a.10 v.3_a.11 v.3_a.12
## [1,] 5.0000000 5.0000000 5.000 5.0000000 5.0000000 5.0000000 5.0000000
## [2,] 0.3571429 0.4285714 0.500 0.5714286 0.6428571 0.7142857 0.7857143
## [3,] 0.0250000 0.0250000 0.025 0.0250000 0.0250000 0.0250000 0.0250000
## [4,] NA NA NA NA NA NA NA
## [5,] NA NA NA NA NA NA NA
## v.3_a.13 v.3_a.14 v.3_a.15
## [1,] 5.0000000 5.0000000 5.000
## [2,] 0.8571429 0.9285714 1.000
## [3,] 0.0250000 0.0250000 0.025
## [4,] NA NA NA
## [5,] NA NA NA
## The names of linguistic terms on the output variable:
## [1] "c.1" "c.2" "c.3" "c.4" "c.5" "c.6" "c.7" "c.8" "c.9" "c.10"
## [11] "c.11" "c.12" "c.13" "c.14" "c.15"
## The parameter values of membership function on the output variable (normalized):
## c.1 c.2 c.3 c.4 c.5 c.6 c.7 c.8
## [1,] 5.000 5.00000000 5.0000000 5.0000000 5.0000000 5.0000000 5.0000000 5.000
## [2,] 0.000 0.07142857 0.1428571 0.2142857 0.2857143 0.3571429 0.4285714 0.500
## [3,] 0.025 0.02500000 0.0250000 0.0250000 0.0250000 0.0250000 0.0250000 0.025
## [4,] NA NA NA NA NA NA NA NA
## [5,] NA NA NA NA NA NA NA NA
## c.9 c.10 c.11 c.12 c.13 c.14 c.15
## [1,] 5.0000000 5.0000000 5.0000000 5.0000000 5.0000000 5.0000000 5.000
## [2,] 0.5714286 0.6428571 0.7142857 0.7857143 0.8571429 0.9285714 1.000
## [3,] 0.0250000 0.0250000 0.0250000 0.0250000 0.0250000 0.0250000 0.025
## [4,] NA NA NA NA NA NA NA
## [5,] NA NA NA NA NA NA NA
## The number of linguistic terms on each variables
## PH Kekeruhan TDS Kelayakan
## [1,] 15 15 15 15
## The fuzzy IF-THEN rules:
## V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13
## 1 IF PH is v.1_a.8 and Kekeruhan is v.2_a.9 and TDS is v.3_a.1 THEN
## 2 IF PH is v.1_a.1 and Kekeruhan is v.2_a.1 and TDS is v.3_a.4 THEN
## 3 IF PH is v.1_a.7 and Kekeruhan is v.2_a.3 and TDS is v.3_a.4 THEN
## 4 IF PH is v.1_a.4 and Kekeruhan is v.2_a.15 and TDS is v.3_a.4 THEN
## 5 IF PH is v.1_a.1 and Kekeruhan is v.2_a.10 and TDS is v.3_a.14 THEN
## 6 IF PH is v.1_a.15 and Kekeruhan is v.2_a.4 and TDS is v.3_a.5 THEN
## 7 IF PH is v.1_a.7 and Kekeruhan is v.2_a.2 and TDS is v.3_a.1 THEN
## 8 IF PH is v.1_a.9 and Kekeruhan is v.2_a.2 and TDS is v.3_a.2 THEN
## 9 IF PH is v.1_a.9 and Kekeruhan is v.2_a.2 and TDS is v.3_a.15 THEN
## 10 IF PH is v.1_a.1 and Kekeruhan is v.2_a.12 and TDS is v.3_a.4 THEN
## 11 IF PH is v.1_a.15 and Kekeruhan is v.2_a.12 and TDS is v.3_a.5 THEN
## 12 IF PH is v.1_a.7 and Kekeruhan is v.2_a.2 and TDS is v.3_a.7 THEN
## 13 IF PH is v.1_a.7 and Kekeruhan is v.2_a.12 and TDS is v.3_a.4 THEN
## 14 IF PH is v.1_a.7 and Kekeruhan is v.2_a.2 and TDS is v.3_a.3 THEN
## 15 IF PH is v.1_a.12 and Kekeruhan is v.2_a.14 and TDS is v.3_a.1 THEN
## 16 IF PH is v.1_a.13 and Kekeruhan is v.2_a.10 and TDS is v.3_a.1 THEN
## 17 IF PH is v.1_a.3 and Kekeruhan is v.2_a.9 and TDS is v.3_a.1 THEN
## V14 V15 V16
## 1 Kelayakan is c.15
## 2 Kelayakan is c.1
## 3 Kelayakan is c.15
## 4 Kelayakan is c.1
## 5 Kelayakan is c.1
## 6 Kelayakan is c.1
## 7 Kelayakan is c.15
## 8 Kelayakan is c.15
## 9 Kelayakan is c.1
## 10 Kelayakan is c.1
## 11 Kelayakan is c.1
## 12 Kelayakan is c.15
## 13 Kelayakan is c.15
## 14 Kelayakan is c.15
## 15 Kelayakan is c.1
## 16 Kelayakan is c.1
## 17 Kelayakan is c.1
## Plot the membership functions
plotMF(object.reg)
Pada FRBS, predict adalah sebuah fungsi yang digunakan untuk melakukan prediksi pada data uji menggunakan model FRBS yang telah dibuat sebelumnya.
Syntax pred <- predict(object.reg, testing) digunakan untuk melakukan prediksi pada data testing menggunakan model FRBS yang disimpan dalam objek object.reg. Objek object.reg dapat diperoleh setelah melakukan training pada model FRBS menggunakan fungsi frbs.learn.
Hasil prediksi yang dihasilkan disimpan dalam objek pred. Objek pred berisi hasil prediksi pada setiap kasus dalam data uji. Objek pred dapat digunakan untuk menghitung akurasi prediksi model FRBS pada data uji, serta untuk melakukan evaluasi dan pengembangan lebih lanjut pada model FRBS.
Dalam rangka meningkatkan akurasi prediksi pada model FRBS, seringkali dilakukan tahap penyetelan parameter (tuning) pada model menggunakan data validasi, dan dilakukan evaluasi akurasi pada data testing yang tidak digunakan dalam tahap penyetelan.
pred <- predict(object.reg, testing)
## [1] "note: Some of your new data are out of the previously specified range"
## [1] "note: Some of your new data are out of the previously specified range"
## [1] "note: Some of your new data are out of the previously specified range"
Pada FRBS, str(pred) adalah sebuah fungsi yang digunakan untuk menampilkan struktur objek pred dalam bentuk teks.
Setelah melakukan prediksi pada data uji menggunakan model FRBS, hasil prediksi disimpan dalam objek pred. Fungsi str(pred) digunakan untuk menampilkan struktur objek pred, yaitu jumlah baris dan kolom dari objek pred, serta tipe data dan nilai pada setiap elemen dalam objek pred.
str(pred)
## num [1:7, 1] 50 100 100 50 50 ...
str(data_research)
## tibble [7 × 2] (S3: tbl_df/tbl/data.frame)
## $ PH : num [1:7] 8.5 7.61 6.88 4.17 6.89 ...
## $ Kelayakan: num [1:7] 100 100 100 50 50 50 50
Pada FRBS, data_research adalah sebuah objek data frame yang digunakan untuk menyimpan data yang akan digunakan dalam tahap penelitian dan evaluasi model. Syntax data_research$predict <- pred digunakan untuk menambahkan kolom baru pada objek data frame data_research yang berisi hasil prediksi dari objek pred.
Setelah melakukan prediksi pada data uji menggunakan model FRBS, hasil prediksi disimpan dalam objek pred. Objek pred kemudian dimasukkan ke dalam kolom baru pada objek data frame data_research dengan nama kolom predict. Dengan menambahkan hasil prediksi ke dalam objek data frame, kita dapat dengan mudah melakukan evaluasi model FRBS pada data penelitian.
Kolom predict pada objek data frame data_research akan berisi hasil prediksi dari model FRBS untuk setiap baris dalam data penelitian. Setelah kolom predict ditambahkan ke dalam objek data frame, kita dapat melakukan evaluasi model FRBS pada data penelitian, seperti menghitung akurasi model atau melakukan visualisasi hasil prediksi.
data_research$predict <- pred
data_research
## # A tibble: 7 × 3
## PH Kelayakan predict[,1]
## <dbl> <dbl> <dbl>
## 1 8.5 100 50.0
## 2 7.61 100 100
## 3 6.88 100 100
## 4 4.17 50 50
## 5 6.89 50 50
## 6 7.02 50 50
## 7 10.7 50 50
Untuk menambahkan kolom baru pada objek data frame data_research yang berisi selisih antara nilai aktual dan nilai prediksi dari model FRBS.
Kolom Kelayakan pada objek data frame data_research berisi nilai aktual yang digunakan sebagai variabel target dalam pembuatan model FRBS. Sedangkan kolom predict adalah kolom baru yang dihasilkan dari hasil prediksi model FRBS pada data penelitian. Dengan menghitung selisih antara nilai aktual dan nilai prediksi, kita dapat mengetahui seberapa jauh hasil prediksi model FRBS dari nilai aktual pada setiap kasus dalam data penelitian.
Kolom baru yang dihasilkan diberi nama residual. Kolom residual pada objek data frame data_research berisi selisih antara nilai aktual dan nilai prediksi dari model FRBS pada setiap kasus dalam data penelitian. Dengan menambahkan kolom residual ke dalam objek data frame, kita dapat melakukan evaluasi model FRBS lebih lanjut, seperti menghitung nilai rata-rata selisih atau melakukan visualisasi hasil evaluasi
data_research$residual <- (data_research$Kelayakan-data_research$predict )
data_research
## # A tibble: 7 × 4
## PH Kelayakan predict[,1] residual[,1]
## <dbl> <dbl> <dbl> <dbl>
## 1 8.5 100 50.0 50.0
## 2 7.61 100 100 0
## 3 6.88 100 100 0
## 4 4.17 50 50 0
## 5 6.89 50 50 0
## 6 7.02 50 50 0
## 7 10.7 50 50 0
Fungsi mean digunakan untuk menghitung akurasi model FRBS pada data penelitian.
Kolom Kelayakan pada objek data frame data_research berisi nilai aktual yang digunakan sebagai variabel target dalam pembuatan model FRBS. Sedangkan kolom predict adalah kolom baru yang dihasilkan dari hasil prediksi model FRBS pada data penelitian. Operator != digunakan untuk membandingkan nilai pada kolom predict dan kolom Kelayakan.
Operator != menghasilkan vektor logika, di mana nilai TRUE menunjukkan bahwa prediksi model tidak sama dengan nilai aktual dan nilai FALSE menunjukkan bahwa prediksi model sama dengan nilai aktual. Syntax mean() digunakan untuk menghitung rata-rata dari vektor logika, di mana nilai TRUE dihitung sebagai 1 dan nilai FALSE dihitung sebagai 0.
Dengan menghitung rata-rata dari vektor logika data_research kita dapat mengetahui akurasi model FRBS pada data penelitian, yaitu persentase kasus di mana prediksi model tidak sama dengan nilai aktual. Semakin kecil nilai akurasi, semakin buruk kinerja model. Sebaliknya, semakin besar nilai akurasi, semakin baik kinerja model.
mean(data_research$predict != data_research$Kelayakan)
## [1] 0.1428571
Syntax accuracy <- table(data_research\(predict, data_research\)Kelayakan) digunakan untuk membuat tabel kontingensi antara nilai prediksi dan nilai aktual pada objek data frame data_research. Tabel kontingensi ini akan digunakan untuk menghitung berbagai metrik evaluasi kinerja model FRBS pada data penelitian, seperti akurasi, presisi, recall, dan F1-score.
Syntax sum(diag(accuracy))/sum(accuracy) digunakan untuk menghitung akurasi model FRBS pada data penelitian dengan menggunakan tabel kontingensi yang telah dibuat sebelumnya. Operator diag() digunakan untuk mengambil nilai diagonal pada tabel kontingensi, yaitu kasus-kasus di mana nilai prediksi sama dengan nilai aktual. Syntax sum() digunakan untuk menghitung jumlah total kasus yang terdapat pada tabel kontingensi.
Dengan menghitung rasio antara jumlah kasus yang terdapat pada diagonal tabel kontingensi (yaitu kasus-kasus di mana nilai prediksi sama dengan nilai aktual) dan jumlah total kasus pada tabel kontingensi, kita dapat mengetahui akurasi model FRBS pada data penelitian. Semakin besar nilai akurasi, semakin baik kinerja model.
accuracy <- table(data_research$predict, data_research$Kelayakan)
sum(diag(accuracy))/sum(accuracy)
## [1] 0.7142857
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
library(reshape2)
## Warning: package 'reshape2' was built under R version 4.2.3
x <- 1:7
real_data <- data_research$Kelayakan
predict_data <- data_research$predict
df <- data.frame(x, real_data , predict_data )
# melt the data to a long format
df2 <- melt(data = df, id.vars = "x")
# plot, using the aesthetics argument 'colour'
ggplot(data = df2, aes(x = x, y = value, colour = variable))+
geom_point(alpha = 1/2,size=7) +
theme(legend.justification = "top") +
labs(title = "Graph of Prediction using Fuzzy logic",
subtitle = "Mamdani",
y = "Waktu Pompa", x = "Iterasi") +
theme(axis.text.x = element_text(angle = -45))