library(readr)
## Warning: package 'readr' was built under R version 4.4.3
dataset_mutu_kedelai_TIP_100data <- read_csv("dataset_mutu_kedelai_TIP_100data.csv")
## Rows: 100 Columns: 5
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): mutu
## dbl (4): kadar_air_persen, biji_rusak_persen, kotoran_persen, berat_1000_bij...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

#IMPOR DATA

df <- read.csv("dataset_mutu_kedelai_TIP_100data.csv")
data_mutu_kedelai <- read.csv("dataset_mutu_kedelai_TIP_100data.csv")
data_mutu_kedelai <- read.csv("dataset_mutu_kedelai_TIP_100data.csv")
str(data_mutu_kedelai)
## 'data.frame':    100 obs. of  5 variables:
##  $ kadar_air_persen    : num  13.7 19.5 17.3 16 11.6 11.6 10.6 18.7 16 17.1 ...
##  $ biji_rusak_persen   : num  0.4 7.6 3.8 6.1 10.9 3 4.9 9.1 2.7 0.9 ...
##  $ kotoran_persen      : num  2.6 0.3 0.6 3.6 2.4 0 0.4 2.7 0 0.6 ...
##  $ berat_1000_biji_gram: num  163 187 187 192 196 209 186 176 200 174 ...
##  $ mutu                : chr  "Rendah" "Rendah" "Rendah" "Rendah" ...

#PEMBAGIAN DATA

set.seed(123)
index <- sample(1:nrow(data_mutu_kedelai), 0.7*nrow(data_mutu_kedelai))
train <- data_mutu_kedelai[index, ]
test <- data_mutu_kedelai[-index, ]

PEMBANGUNAN MODEL DECISION TREE

library(rpart)
model_tree <- rpart(mutu ~ ., data = train, method = "class")
model_tree
## n= 70 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
## 1) root 70 6 Rendah (0.91428571 0.08571429) *

Visualisasi Model

#install.packages("rpart.plot")
library(rpart.plot)
## Warning: package 'rpart.plot' was built under R version 4.4.3
rpart.plot(model_tree)

# Prediksi Data Uji

prediksi <- predict(model_tree, test, type = "class")
head(prediksi)
## [1] Rendah Rendah Rendah Rendah Rendah Rendah
## Levels: Rendah Tinggi

Evaluasi Model

conf_matrix <- table(Actual = test$mutu, Predicted = prediksi)
conf_matrix
##         Predicted
## Actual   Rendah Tinggi
##   Rendah     29      0
##   Tinggi      1      0
akurasi <- sum(diag(conf_matrix)) / sum(conf_matrix)
akurasi
## [1] 0.9666667

kesimpulan

Berdasarkan hasil pengujian model Decision Tree, diperoleh confusion matrix yang menunjukkan bahwa model mampu mengklasifikasikan mutu kedelai dengan sangat baik pada kelas Rendah, di mana seluruh data aktual Rendah berhasil diprediksi dengan benar. Namun, model belum mampu mengklasifikasikan kelas Tinggi dengan baik karena sebagian data Tinggi masih salah diklasifikasikan. Meskipun demikian, nilai akurasi sebesar 96,67% menunjukkan bahwa secara keseluruhan model memiliki tingkat ketepatan yang sangat tinggi dalam mengklasifikasikan mutu kedelai.