library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3
library(caret)
## Warning: package 'caret' was built under R version 4.4.3
## Loading required package: ggplot2
## Loading required package: lattice
library(e1071)
## Warning: package 'e1071' was built under R version 4.4.3
library(randomForest)
## Warning: package 'randomForest' was built under R version 4.4.3
## randomForest 4.7-1.2
## Type rfNews() to see new features/changes/bug fixes.
## 
## Attaching package: 'randomForest'
## The following object is masked from 'package:ggplot2':
## 
##     margin
library(rpart)
## Warning: package 'rpart' was built under R version 4.4.3
train <- read_excel("datatraining.xlsx")
test <- read_excel("datatesting.xlsx")
categorical_columns <- c("jenis_kelamin", "dukungan_orang_tua", "fasilitas_belajar",
                         "minat_pada_pelajaran", "kesulitan_ekonomi")

train[categorical_columns] <- lapply(train[categorical_columns], factor)
test[categorical_columns] <- lapply(test[categorical_columns], factor)

train$motivasi_belajar <- factor(train$motivasi_belajar,
                                 levels = c(1, 2, 3),
                                 labels = c("Rendah", "Sedang", "Tinggi"))

# Bersihkan NA
train <- na.omit(train)
test <- na.omit(test)
dt_model <- rpart(motivasi_belajar ~ ., data = train, method = "class")
rf_model <- randomForest(motivasi_belajar ~ ., data = train, ntree = 100)
svm_model <- svm(motivasi_belajar ~ ., data = train, kernel = "linear")
# Prediksi
pred_dt <- predict(dt_model, test, type = "class")
pred_rf <- predict(rf_model, test)
pred_svm <- predict(svm_model, test)

# Gabungkan
hasil <- data.frame(ID = 1:nrow(test),
                    Decision_Tree = pred_dt,
                    Random_Forest = pred_rf,
                    SVM = pred_svm)

# TAMPILKAN ke HTML
print(hasil)
##    ID Decision_Tree Random_Forest    SVM
## 1   1        Sedang        Sedang Sedang
## 2   2        Sedang        Sedang Sedang
## 3   3        Rendah        Rendah Rendah
## 4   4        Sedang        Sedang Sedang
## 5   5        Rendah        Rendah Rendah
## 6   6        Sedang        Sedang Sedang
## 7   7        Sedang        Sedang Sedang
## 8   8        Tinggi        Sedang Sedang
## 9   9        Rendah        Sedang Sedang
## 10 10        Sedang        Sedang Sedang
## 11 11        Sedang        Rendah Rendah
## 12 12        Rendah        Rendah Rendah
## 13 13        Rendah        Sedang Sedang
## 14 14        Sedang        Sedang Rendah
## 15 15        Rendah        Rendah Rendah
# Simpan ke CSV (optional)
write.csv(hasil, "hasil_prediksi_uas.csv", row.names = FALSE)