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.
library(rpart)
## Warning: package 'rpart' 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
## Warning: package 'ggplot2' was built under R version 4.4.2
## 
## Attaching package: 'ggplot2'
## The following object is masked from 'package:randomForest':
## 
##     margin
## Loading required package: lattice
library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3
#preprosesing
data_training <- read_excel ("C:/Users/LENOVO/Downloads/datatraining.xlsx")
data_testing <- read_excel("C:/Users/LENOVO/Downloads/datatesting.xlsx")
data_testing <- na.omit(data_testing)
data_training <- na.omit(data_training)
data_testing<- data_testing[!duplicated(data_testing), ]
data_training<- data_training[!duplicated(data_training), ]
#ubah menjadi data bentuk faktor
str(data_testing)
## tibble [15 × 10] (S3: tbl_df/tbl/data.frame)
##  $ usia                : num [1:15] 15 19 17 20 16 21 21 19 17 18 ...
##  $ jenis_kelamin       : chr [1:15] "1" "0" "0" "1" ...
##  $ nilai_rata_rata     : num [1:15] 90.2 79.6 66.9 85.6 65.9 70.8 86.3 84.3 79.5 74.4 ...
##  $ dukungan_orang_tua  : chr [1:15] "2" "1" "2" "3" ...
##  $ fasilitas_belajar   : chr [1:15] "2" "1" "3" "1" ...
##  $ jam_belajar_per_hari: num [1:15] 5.4 4.6 2.9 3.9 5.3 1.9 4.4 1.5 2 5.5 ...
##  $ kehadiran_persen    : num [1:15] 78.3 88.2 76.3 89.4 74 100 100 92.1 84.5 90.3 ...
##  $ minat_pada_pelajaran: chr [1:15] "2" "3" "1" "1" ...
##  $ kesulitan_ekonomi   : chr [1:15] "1" "0" "0" "0" ...
##  $ jarak_rumah_sekolah : num [1:15] 4.7 10.8 11.8 5.7 3.1 7.1 8.2 5.4 4.2 10.7 ...
str(data_testing)
## tibble [15 × 10] (S3: tbl_df/tbl/data.frame)
##  $ usia                : num [1:15] 15 19 17 20 16 21 21 19 17 18 ...
##  $ jenis_kelamin       : chr [1:15] "1" "0" "0" "1" ...
##  $ nilai_rata_rata     : num [1:15] 90.2 79.6 66.9 85.6 65.9 70.8 86.3 84.3 79.5 74.4 ...
##  $ dukungan_orang_tua  : chr [1:15] "2" "1" "2" "3" ...
##  $ fasilitas_belajar   : chr [1:15] "2" "1" "3" "1" ...
##  $ jam_belajar_per_hari: num [1:15] 5.4 4.6 2.9 3.9 5.3 1.9 4.4 1.5 2 5.5 ...
##  $ kehadiran_persen    : num [1:15] 78.3 88.2 76.3 89.4 74 100 100 92.1 84.5 90.3 ...
##  $ minat_pada_pelajaran: chr [1:15] "2" "3" "1" "1" ...
##  $ kesulitan_ekonomi   : chr [1:15] "1" "0" "0" "0" ...
##  $ jarak_rumah_sekolah : num [1:15] 4.7 10.8 11.8 5.7 3.1 7.1 8.2 5.4 4.2 10.7 ...
#training model dan prediksi
#1 
data_training$motivasi_belajar <- as.factor(data_training$motivasi_belajar)
model_tree <- rpart(motivasi_belajar ~ ., data = data_training, method = "class")
pred_tree <- predict(model_tree, data_testing, type = "class")
#2
model_rf <- randomForest(motivasi_belajar ~ ., data = data_training)
pred_rf <- predict(model_rf, data_testing)
#3
model_svm <- svm(motivasi_belajar ~ ., data = data_training)
pred_svm <- predict(model_svm, data_testing)

#tampilkan hasil prediksi
data.frame(
  Siswa = 1:nrow(data_testing),
  Prediksi_Tree = pred_tree,
  Prediksi_RF = pred_rf,
  Prediksi_SVM = pred_svm
)
##    Siswa Prediksi_Tree Prediksi_RF Prediksi_SVM
## 1      1             2           2            2
## 2      2             2           2            2
## 3      3             1           1            1
## 4      4             2           2            2
## 5      5             1           1            1
## 6      6             2           2            2
## 7      7             2           2            2
## 8      8             3           2            2
## 9      9             1           2            2
## 10    10             2           2            2
## 11    11             2           1            1
## 12    12             1           1            1
## 13    13             1           2            2
## 14    14             2           2            1
## 15    15             1           1            1
View(data.frame(Siswa = 1:nrow(data_testing),
  Prediksi_Tree = pred_tree,
  Prediksi_RF = pred_rf,
  Prediksi_SVM = pred_svm))