library(caret)
## Warning: package 'caret' was built under R version 4.4.3
## Loading required package: ggplot2
## Loading required package: lattice
library(e1071) # Untuk SVM
## Warning: package 'e1071' was built under R version 4.4.3
library(randomForest) # Untuk Random Forest
## 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) # Untuk Decision Tree
## Warning: package 'rpart' was built under R version 4.4.3
library(rpart.plot)
## Warning: package 'rpart.plot' was built under R version 4.4.3
library(ggplot2)
data_training<-read.csv("C:/Users/CHANIVA/Documents/DATA UAS DATA MINING/data_training.csv",header = TRUE,sep = ",")
data_training
## usia jenis_kelamin nilai_rata_rata dukungan_orang_tua fasilitas_belajar
## 1 15 0 85.2 1 2
## 2 19 0 60.9 2 3
## 3 15 0 60.5 2 1
## 4 15 1 78.6 3 2
## 5 16 1 66.2 2 1
## 6 18 1 85.9 2 1
## 7 16 1 45.2 1 3
## 8 16 0 91.6 2 2
## 9 15 1 74.1 2 1
## 10 21 1 88.2 3 3
## 11 21 0 82.9 3 2
## 12 18 0 76.9 2 2
## 13 15 1 63.8 2 1
## 14 19 1 73.7 2 1
## 15 20 1 68.2 2 2
## 16 18 0 58.4 3 1
## 17 16 1 74.6 1 3
## 18 16 1 72.9 2 1
## 19 21 1 66.0 2 3
## 20 17 0 69.9 3 2
## 21 15 0 56.6 2 1
## 22 15 1 65.7 2 1
## 23 17 0 83.8 2 3
## 24 18 1 87.4 1 1
## 25 19 0 64.5 1 2
## 26 21 1 68.3 3 3
## 27 19 1 82.3 3 2
## 28 19 1 69.9 1 3
## 29 18 0 70.7 3 3
## 30 16 1 68.8 2 2
## 31 18 0 77.0 2 3
## 32 17 1 90.0 3 3
## 33 16 0 63.6 1 2
## 34 15 1 80.0 1 2
## 35 16 1 89.1 2 2
## 36 20 1 68.8 3 3
## 37 17 0 67.6 1 2
## 38 21 0 78.8 2 1
## 39 20 1 61.9 2 2
## 40 16 0 75.8 2 3
## 41 18 0 67.0 2 2
## 42 18 1 92.7 2 2
## 43 20 1 65.6 1 2
## 44 16 1 82.0 1 2
## 45 19 1 67.4 1 2
## 46 18 1 70.3 3 2
## 47 19 1 66.6 2 1
## 48 18 0 64.1 2 2
## 49 16 1 61.8 2 1
## 50 16 1 69.1 2 1
## 51 17 0 82.5 3 3
## 52 21 0 66.8 2 1
## 53 15 1 57.4 3 3
## 54 19 1 71.1 2 3
## 55 16 1 68.3 2 1
## 56 16 0 82.0 3 2
## 57 20 1 66.7 2 3
## 58 20 0 41.5 2 2
## 59 16 0 78.4 3 2
## 60 18 0 55.7 3 2
## 61 17 1 76.8 2 2
## 62 20 1 89.0 2 2
## 63 19 0 78.7 2 2
## 64 16 1 74.5 2 2
## 65 21 1 99.6 3 3
## 66 20 0 80.7 2 2
## 67 16 0 84.7 3 2
## 68 16 0 100.0 3 3
## 69 19 0 74.7 1 1
## 70 15 0 70.9 3 1
## 71 15 1 74.0 3 2
## 72 21 0 69.3 2 2
## 73 18 1 69.9 3 2
## 74 19 0 74.4 2 1
## 75 16 1 65.2 1 3
## 76 15 1 75.6 2 1
## 77 19 1 75.6 1 3
## 78 18 1 71.2 2 2
## 79 18 1 89.2 2 3
## 80 15 0 66.8 3 2
## 81 17 1 70.4 2 3
## 82 17 0 77.2 2 1
## 83 19 1 81.3 2 2
## 84 19 0 80.2 3 3
## 85 18 0 73.1 3 2
## 86 20 1 74.4 2 1
## 87 19 1 68.0 2 3
## 88 18 0 68.0 2 3
## 89 20 0 80.6 2 2
## 90 16 1 75.5 3 2
## 91 16 0 80.7 2 1
## 92 15 0 63.0 2 3
## 93 16 0 84.6 2 2
## 94 19 0 80.1 2 2
## 95 20 0 71.3 3 1
## 96 21 1 89.2 2 2
## 97 19 1 91.9 2 2
## 98 18 1 80.2 1 2
## 99 15 1 74.5 2 3
## 100 18 1 62.2 2 2
## 101 21 0 70.1 1 1
## 102 16 1 87.9 3 1
## 103 16 0 84.3 2 1
## 104 17 0 82.3 1 3
## 105 19 0 73.1 1 2
## 106 19 0 69.4 2 3
## 107 20 1 82.8 2 1
## 108 17 1 72.3 3 1
## 109 20 0 63.9 2 2
## 110 18 0 69.0 2 2
## 111 19 0 71.8 2 1
## 112 15 1 86.7 1 3
## 113 18 1 92.0 2 2
## 114 15 1 84.3 1 2
## 115 15 0 63.5 3 2
## 116 19 1 76.2 2 1
## 117 20 1 63.4 2 2
## 118 17 1 85.0 3 3
## 119 15 1 80.4 3 3
## 120 16 0 91.0 2 2
## 121 19 1 73.9 1 1
## 122 21 0 75.1 2 1
## 123 20 0 80.7 3 3
## 124 15 0 80.4 2 2
## 125 19 1 69.7 2 1
## 126 20 0 76.8 2 3
## 127 19 1 86.6 1 1
## 128 15 1 81.4 2 2
## 129 21 0 81.0 2 2
## 130 16 1 69.7 3 1
## 131 17 1 79.5 2 1
## 132 16 0 78.2 1 3
## 133 16 1 71.8 2 3
## 134 15 0 84.0 2 3
## 135 17 1 73.5 2 3
## 136 15 1 77.6 2 2
## 137 19 0 92.3 2 1
## 138 15 0 88.7 2 2
## 139 17 0 74.4 2 1
## 140 21 1 79.5 1 1
## 141 15 1 85.8 1 2
## 142 20 0 76.9 1 1
## 143 20 0 90.7 2 3
## 144 21 1 72.7 2 1
## 145 20 1 82.7 2 2
## 146 21 0 71.9 2 1
## 147 17 1 61.4 3 3
## 148 20 1 65.9 1 1
## 149 19 1 68.5 3 2
## 150 15 0 64.6 2 2
## 151 20 1 90.9 2 3
## 152 15 0 80.4 1 2
## 153 16 1 51.3 2 3
## 154 21 0 79.7 2 2
## 155 16 1 72.7 3 2
## 156 20 1 75.9 3 1
## 157 20 0 62.0 2 3
## 158 20 0 66.5 3 3
## 159 20 0 52.1 1 3
## 160 21 1 87.8 1 2
## 161 20 0 91.6 2 2
## 162 18 0 79.0 1 3
## 163 18 0 59.9 2 1
## 164 21 1 63.6 2 3
## 165 16 0 78.4 3 1
## 166 16 1 60.3 2 2
## 167 21 0 72.1 1 2
## 168 18 1 54.7 3 3
## 169 20 1 69.1 3 2
## 170 18 0 64.5 2 2
## 171 16 0 64.2 2 3
## 172 15 1 87.8 2 3
## 173 15 1 75.8 1 2
## 174 16 0 65.1 2 3
## 175 16 1 67.4 2 2
## 176 15 0 75.1 2 2
## 177 18 0 89.1 3 1
## 178 17 0 77.9 1 2
## 179 19 0 78.0 2 2
## 180 20 0 61.0 2 2
## 181 20 1 76.0 3 2
## 182 16 1 78.7 3 3
## 183 18 0 58.2 2 3
## 184 16 1 92.8 2 3
## 185 21 1 52.2 1 2
## 186 17 0 59.1 2 3
## 187 16 0 72.5 3 2
## 188 15 1 71.5 1 2
## 189 18 1 77.7 2 2
## 190 20 0 79.5 2 3
## 191 19 0 48.1 2 1
## 192 16 0 83.7 2 2
## 193 15 0 76.7 1 3
## 194 15 0 64.1 2 2
## 195 19 1 71.2 3 3
## 196 17 1 65.5 3 2
## 197 20 1 82.2 2 1
## 198 20 1 73.4 1 1
## 199 18 0 57.1 3 3
## 200 16 1 89.9 3 2
## jam_belajar_per_hari kehadiran_persen minat_pada_pelajaran
## 1 4.1 79.7 2
## 2 3.8 89.8 2
## 3 6.1 86.7 1
## 4 5.1 78.5 3
## 5 5.5 81.0 1
## 6 3.7 85.4 2
## 7 2.8 78.9 1
## 8 6.2 78.1 2
## 9 4.6 96.8 2
## 10 3.0 82.1 3
## 11 4.1 93.9 1
## 12 3.1 86.5 3
## 13 4.2 89.2 3
## 14 5.6 77.2 1
## 15 3.3 85.0 1
## 16 4.2 84.0 3
## 17 4.7 73.6 2
## 18 3.2 81.1 3
## 19 1.5 82.9 2
## 20 3.7 86.9 1
## 21 2.7 81.8 3
## 22 5.4 90.6 2
## 23 3.9 90.1 1
## 24 3.8 68.6 2
## 25 1.6 75.8 2
## 26 2.4 72.9 2
## 27 4.7 82.0 3
## 28 3.7 99.7 3
## 29 2.9 87.7 2
## 30 1.8 74.9 1
## 31 7.2 88.5 2
## 32 5.7 82.3 3
## 33 2.7 86.1 2
## 34 3.1 86.0 3
## 35 4.3 72.7 3
## 36 3.9 95.1 2
## 37 5.8 92.5 2
## 38 4.1 81.6 1
## 39 4.1 73.1 2
## 40 1.0 72.2 1
## 41 3.8 92.4 3
## 42 1.5 92.2 2
## 43 3.3 79.7 3
## 44 2.8 88.8 1
## 45 4.7 88.6 2
## 46 3.6 98.4 3
## 47 3.4 89.2 2
## 48 3.2 100.0 1
## 49 3.8 87.0 2
## 50 1.6 91.0 3
## 51 5.5 93.0 3
## 52 3.8 84.4 2
## 53 5.1 100.0 1
## 54 7.2 90.8 1
## 55 2.6 95.0 3
## 56 5.7 87.6 2
## 57 6.1 95.3 1
## 58 5.3 85.0 1
## 59 4.7 91.2 3
## 60 6.6 89.5 1
## 61 3.3 94.9 1
## 62 2.9 88.7 2
## 63 4.4 86.4 2
## 64 4.4 80.7 1
## 65 5.8 77.3 2
## 66 5.7 75.4 1
## 67 4.3 91.9 2
## 68 3.6 74.3 2
## 69 6.4 90.0 2
## 70 1.0 80.3 3
## 71 2.9 93.2 3
## 72 4.6 91.9 2
## 73 2.2 79.7 2
## 74 4.5 81.5 2
## 75 2.9 77.5 1
## 76 3.2 69.7 1
## 77 2.9 93.0 3
## 78 5.5 87.4 2
## 79 3.9 96.5 3
## 80 3.3 86.1 3
## 81 5.1 100.0 3
## 82 7.7 79.7 3
## 83 4.1 82.4 1
## 84 4.2 76.2 3
## 85 6.5 95.4 3
## 86 4.3 85.6 3
## 87 2.7 97.1 3
## 88 3.8 82.9 1
## 89 4.6 94.5 2
## 90 4.9 97.7 2
## 91 2.4 77.0 1
## 92 6.5 76.9 2
## 93 6.1 88.1 2
## 94 4.8 83.4 1
## 95 3.1 87.4 2
## 96 3.7 86.6 3
## 97 1.0 82.2 3
## 98 2.2 75.4 3
## 99 2.1 77.3 3
## 100 3.0 72.6 1
## 101 6.5 84.8 1
## 102 3.6 89.8 2
## 103 4.7 94.4 1
## 104 3.2 79.5 1
## 105 4.9 90.6 1
## 106 5.3 74.0 3
## 107 5.8 80.7 1
## 108 4.8 88.1 1
## 109 7.0 73.1 1
## 110 2.6 89.4 2
## 111 4.9 81.6 3
## 112 5.1 79.0 2
## 113 3.1 78.0 3
## 114 5.5 85.0 2
## 115 4.6 87.8 2
## 116 4.7 88.9 2
## 117 5.8 76.6 1
## 118 3.9 79.9 1
## 119 5.0 79.9 2
## 120 3.6 90.0 2
## 121 4.2 90.0 3
## 122 8.3 100.0 3
## 123 2.7 90.8 1
## 124 5.0 80.0 1
## 125 8.3 79.1 3
## 126 3.7 98.3 1
## 127 6.6 83.8 3
## 128 2.2 94.8 1
## 129 4.7 90.0 1
## 130 2.4 93.1 1
## 131 1.8 82.2 1
## 132 2.7 75.8 3
## 133 2.4 88.6 1
## 134 3.3 91.8 1
## 135 2.7 88.4 1
## 136 4.0 98.3 3
## 137 5.0 85.5 2
## 138 2.6 76.1 2
## 139 4.1 88.9 3
## 140 1.0 83.4 2
## 141 4.2 93.3 1
## 142 4.6 80.4 1
## 143 2.4 78.9 1
## 144 4.8 72.6 2
## 145 7.5 74.7 1
## 146 4.2 75.6 3
## 147 3.6 66.3 1
## 148 8.0 90.6 1
## 149 5.2 91.1 1
## 150 4.6 77.1 3
## 151 6.4 83.8 1
## 152 6.5 89.0 2
## 153 2.0 91.7 2
## 154 5.0 88.3 2
## 155 3.2 88.5 2
## 156 3.3 86.6 2
## 157 2.8 76.7 2
## 158 1.0 86.4 2
## 159 5.2 93.0 2
## 160 2.7 79.5 1
## 161 6.0 93.2 3
## 162 4.9 89.1 3
## 163 1.0 86.5 1
## 164 2.6 84.9 3
## 165 6.0 98.9 2
## 166 3.2 85.7 3
## 167 1.0 79.4 3
## 168 8.8 88.3 2
## 169 4.9 80.3 1
## 170 3.6 79.0 3
## 171 7.5 69.8 2
## 172 7.0 87.5 3
## 173 4.7 81.8 1
## 174 1.6 90.8 3
## 175 3.4 79.0 2
## 176 4.5 84.9 1
## 177 2.6 83.6 1
## 178 2.6 87.5 2
## 179 2.8 80.8 1
## 180 1.0 93.1 1
## 181 6.3 85.1 3
## 182 5.4 100.0 1
## 183 2.2 100.0 3
## 184 3.7 90.7 2
## 185 2.4 77.5 2
## 186 5.0 84.6 2
## 187 3.5 81.4 2
## 188 5.9 96.9 2
## 189 5.5 96.1 2
## 190 1.1 80.9 2
## 191 3.1 84.6 1
## 192 2.1 76.3 2
## 193 3.8 91.8 3
## 194 4.4 89.5 2
## 195 1.9 95.1 3
## 196 5.2 76.2 2
## 197 5.3 87.9 2
## 198 5.7 80.9 2
## 199 2.0 92.3 3
## 200 3.2 95.5 2
## kesulitan_ekonomi jarak_rumah_sekolah motivasi_belajar
## 1 0 11.5 1
## 2 1 6.3 2
## 3 1 15.9 1
## 4 1 9.8 2
## 5 1 3.5 1
## 6 1 1.0 1
## 7 0 6.4 1
## 8 0 4.9 2
## 9 0 6.5 1
## 10 1 9.5 3
## 11 1 5.5 2
## 12 1 2.1 2
## 13 1 14.5 1
## 14 0 15.0 1
## 15 1 17.6 1
## 16 1 11.1 1
## 17 1 6.7 1
## 18 0 8.1 2
## 19 0 3.5 2
## 20 0 11.6 1
## 21 1 1.1 1
## 22 1 2.8 2
## 23 1 14.0 2
## 24 1 20.5 1
## 25 0 8.5 1
## 26 0 15.4 2
## 27 0 4.0 3
## 28 0 11.9 2
## 29 1 6.8 2
## 30 1 1.7 1
## 31 1 6.8 2
## 32 0 7.2 3
## 33 1 3.5 1
## 34 1 9.0 2
## 35 0 8.4 2
## 36 0 14.1 2
## 37 0 12.5 2
## 38 1 10.1 1
## 39 1 10.9 1
## 40 0 3.3 1
## 41 0 16.5 2
## 42 0 2.5 2
## 43 1 7.4 1
## 44 1 1.7 1
## 45 1 6.0 1
## 46 0 16.7 2
## 47 1 10.0 1
## 48 1 6.6 1
## 49 1 11.0 1
## 50 0 5.4 2
## 51 0 10.4 3
## 52 0 7.4 1
## 53 1 3.0 2
## 54 0 13.9 2
## 55 0 7.5 2
## 56 0 7.1 3
## 57 0 3.0 2
## 58 1 14.2 1
## 59 0 3.8 2
## 60 0 9.7 2
## 61 0 11.9 1
## 62 0 14.5 2
## 63 1 12.4 1
## 64 1 12.7 1
## 65 1 9.4 2
## 66 0 7.1 2
## 67 0 3.7 2
## 68 0 8.7 2
## 69 0 10.2 2
## 70 0 3.9 2
## 71 1 11.3 2
## 72 0 6.1 2
## 73 1 9.5 1
## 74 0 8.0 2
## 75 0 6.6 1
## 76 1 1.1 1
## 77 1 8.2 2
## 78 1 3.5 2
## 79 0 4.9 3
## 80 1 11.4 1
## 81 0 15.1 3
## 82 0 11.4 1
## 83 0 5.8 2
## 84 0 9.0 2
## 85 0 9.2 3
## 86 1 9.3 2
## 87 1 7.8 2
## 88 1 3.4 1
## 89 0 10.2 2
## 90 0 5.6 2
## 91 0 3.3 1
## 92 0 9.2 2
## 93 0 7.4 2
## 94 1 6.3 1
## 95 0 3.3 2
## 96 0 6.1 2
## 97 1 11.7 2
## 98 1 11.7 1
## 99 1 5.0 2
## 100 1 3.7 1
## 101 1 2.4 1
## 102 0 8.4 2
## 103 0 12.8 2
## 104 0 3.4 1
## 105 0 13.8 1
## 106 1 12.6 2
## 107 0 9.3 2
## 108 1 8.2 1
## 109 0 12.3 1
## 110 0 5.8 1
## 111 1 6.0 1
## 112 0 7.3 2
## 113 0 7.1 2
## 114 1 8.7 2
## 115 0 11.9 2
## 116 1 8.4 1
## 117 0 1.3 1
## 118 1 11.4 2
## 119 1 15.6 2
## 120 0 1.0 2
## 121 0 13.8 2
## 122 0 10.0 2
## 123 0 10.8 2
## 124 1 5.7 2
## 125 1 11.8 1
## 126 0 11.3 2
## 127 1 8.1 2
## 128 0 12.2 1
## 129 0 10.8 2
## 130 0 7.7 1
## 131 1 13.6 1
## 132 1 10.2 1
## 133 0 7.2 2
## 134 0 2.0 2
## 135 0 10.4 1
## 136 0 2.9 2
## 137 0 3.3 2
## 138 0 4.7 1
## 139 0 1.0 2
## 140 0 7.9 1
## 141 0 4.4 2
## 142 1 3.3 1
## 143 0 6.2 2
## 144 1 10.2 1
## 145 1 8.4 2
## 146 0 10.4 2
## 147 0 5.3 2
## 148 0 9.5 1
## 149 0 14.1 2
## 150 1 3.8 1
## 151 0 7.9 2
## 152 0 11.8 2
## 153 0 9.0 2
## 154 1 14.2 2
## 155 0 13.4 2
## 156 1 5.6 2
## 157 0 10.2 1
## 158 1 4.3 1
## 159 0 6.3 2
## 160 0 12.0 1
## 161 1 7.8 3
## 162 0 9.6 2
## 163 1 11.3 1
## 164 0 3.7 2
## 165 1 5.7 2
## 166 1 11.1 1
## 167 0 7.5 1
## 168 0 5.6 2
## 169 0 7.7 1
## 170 0 1.0 1
## 171 1 3.7 2
## 172 1 8.6 3
## 173 1 1.0 1
## 174 1 8.0 2
## 175 0 8.7 1
## 176 0 2.4 2
## 177 0 11.1 2
## 178 0 4.7 1
## 179 1 8.7 1
## 180 1 2.5 1
## 181 0 7.5 2
## 182 0 12.5 3
## 183 1 10.8 2
## 184 0 4.9 3
## 185 0 11.4 1
## 186 0 16.7 2
## 187 1 7.4 2
## 188 1 12.8 1
## 189 0 10.6 2
## 190 1 7.1 2
## 191 0 13.3 1
## 192 1 1.0 1
## 193 1 7.5 2
## 194 1 13.1 1
## 195 0 10.9 3
## 196 1 10.9 2
## 197 1 14.4 2
## 198 1 8.4 1
## 199 0 10.0 3
## 200 0 11.0 2
data_testing<-read.csv("C:/Users/CHANIVA/Documents/DATA UAS DATA MINING/data_testing.csv",header = TRUE,sep = ",")
data_testing
## usia jenis_kelamin nilai_rata_rata dukungan_orang_tua fasilitas_belajar
## 1 15 1 90.2 2 2
## 2 19 0 79.6 1 1
## 3 17 0 66.9 2 3
## 4 20 1 85.6 3 1
## 5 16 1 65.9 3 1
## 6 21 0 70.8 2 3
## 7 21 0 86.3 3 2
## 8 19 1 84.3 3 3
## 9 17 0 79.5 2 2
## 10 18 0 74.4 1 2
## 11 16 1 76.9 3 2
## 12 15 1 81.9 2 2
## 13 17 1 83.2 3 2
## 14 17 0 65.2 3 3
## 15 20 1 62.0 2 1
## jam_belajar_per_hari kehadiran_persen minat_pada_pelajaran kesulitan_ekonomi
## 1 5.4 78.3 2 1
## 2 4.6 88.2 3 0
## 3 2.9 76.3 1 0
## 4 3.9 89.4 1 0
## 5 5.3 74.0 1 1
## 6 1.9 100.0 1 1
## 7 4.4 100.0 1 0
## 8 1.5 92.1 1 0
## 9 2.0 84.5 3 0
## 10 5.5 90.3 3 0
## 11 1.9 78.7 1 1
## 12 1.4 72.4 1 0
## 13 2.7 87.5 2 1
## 14 1.7 64.9 2 0
## 15 4.2 78.0 1 0
## jarak_rumah_sekolah
## 1 4.7
## 2 10.8
## 3 11.8
## 4 5.7
## 5 3.1
## 6 7.1
## 7 8.2
## 8 5.4
## 9 4.2
## 10 10.7
## 11 4.3
## 12 9.1
## 13 9.4
## 14 12.5
## 15 8.0
sum(is.na(data_training))
## [1] 0
sum(is.na(data_testing))
## [1] 0
data_training$jenis_kelamin <- as.factor(data_training$jenis_kelamin)
data_training$dukungan_orang_tua <- as.factor(data_training$dukungan_orang_tua)
data_training$fasilitas_belajar <- as.factor(data_training$fasilitas_belajar)
data_training$minat_pada_pelajaran <- as.factor(data_training$minat_pada_pelajaran)
data_training$kesulitan_ekonomi <- as.factor(data_training$kesulitan_ekonomi)
data_training$motivasi_belajar <- as.factor(data_training$motivasi_belajar)
str(data_training)
## 'data.frame': 200 obs. of 11 variables:
## $ usia : int 15 19 15 15 16 18 16 16 15 21 ...
## $ jenis_kelamin : Factor w/ 2 levels "0","1": 1 1 1 2 2 2 2 1 2 2 ...
## $ nilai_rata_rata : num 85.2 60.9 60.5 78.6 66.2 85.9 45.2 91.6 74.1 88.2 ...
## $ dukungan_orang_tua : Factor w/ 3 levels "1","2","3": 1 2 2 3 2 2 1 2 2 3 ...
## $ fasilitas_belajar : Factor w/ 3 levels "1","2","3": 2 3 1 2 1 1 3 2 1 3 ...
## $ jam_belajar_per_hari: num 4.1 3.8 6.1 5.1 5.5 3.7 2.8 6.2 4.6 3 ...
## $ kehadiran_persen : num 79.7 89.8 86.7 78.5 81 85.4 78.9 78.1 96.8 82.1 ...
## $ minat_pada_pelajaran: Factor w/ 3 levels "1","2","3": 2 2 1 3 1 2 1 2 2 3 ...
## $ kesulitan_ekonomi : Factor w/ 2 levels "0","1": 1 2 2 2 2 2 1 1 1 2 ...
## $ jarak_rumah_sekolah : num 11.5 6.3 15.9 9.8 3.5 1 6.4 4.9 6.5 9.5 ...
## $ motivasi_belajar : Factor w/ 3 levels "1","2","3": 1 2 1 2 1 1 1 2 1 3 ...
data_testing$jenis_kelamin <- as.factor(data_testing$jenis_kelamin)
data_testing$dukungan_orang_tua <- as.factor(data_testing$dukungan_orang_tua)
data_testing$fasilitas_belajar <- as.factor(data_testing$fasilitas_belajar)
data_testing$minat_pada_pelajaran <- as.factor(data_testing$minat_pada_pelajaran)
data_testing$kesulitan_ekonomi <- as.factor(data_testing$kesulitan_ekonomi)
str(data_testing)
## 'data.frame': 15 obs. of 10 variables:
## $ usia : int 15 19 17 20 16 21 21 19 17 18 ...
## $ jenis_kelamin : Factor w/ 2 levels "0","1": 2 1 1 2 2 1 1 2 1 1 ...
## $ nilai_rata_rata : num 90.2 79.6 66.9 85.6 65.9 70.8 86.3 84.3 79.5 74.4 ...
## $ dukungan_orang_tua : Factor w/ 3 levels "1","2","3": 2 1 2 3 3 2 3 3 2 1 ...
## $ fasilitas_belajar : Factor w/ 3 levels "1","2","3": 2 1 3 1 1 3 2 3 2 2 ...
## $ jam_belajar_per_hari: num 5.4 4.6 2.9 3.9 5.3 1.9 4.4 1.5 2 5.5 ...
## $ kehadiran_persen : num 78.3 88.2 76.3 89.4 74 100 100 92.1 84.5 90.3 ...
## $ minat_pada_pelajaran: Factor w/ 3 levels "1","2","3": 2 3 1 1 1 1 1 1 3 3 ...
## $ kesulitan_ekonomi : Factor w/ 2 levels "0","1": 2 1 1 1 2 2 1 1 1 1 ...
## $ jarak_rumah_sekolah : num 4.7 10.8 11.8 5.7 3.1 7.1 8.2 5.4 4.2 10.7 ...
set.seed(123)
train_index <- createDataPartition(data_training$motivasi_belajar, p = 0.8, list = FALSE)
train_data <- data_training[train_index, ]
val_data <- data_training[-train_index, ]
svm_model <- svm(motivasi_belajar ~ ., data = train_data, kernel = "radial", probability = TRUE)
svm_pred <- predict(svm_model, val_data)
svm_confusion <- confusionMatrix(svm_pred, val_data$motivasi_belajar)
print("SVM Confusion Matrix:")
## [1] "SVM Confusion Matrix:"
print(svm_confusion)
## Confusion Matrix and Statistics
##
## Reference
## Prediction 1 2 3
## 1 8 1 0
## 2 8 20 2
## 3 0 0 0
##
## Overall Statistics
##
## Accuracy : 0.7179
## 95% CI : (0.5513, 0.85)
## No Information Rate : 0.5385
## P-Value [Acc > NIR] : 0.01707
##
## Kappa : 0.4257
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: 1 Class: 2 Class: 3
## Sensitivity 0.5000 0.9524 0.00000
## Specificity 0.9565 0.4444 1.00000
## Pos Pred Value 0.8889 0.6667 NaN
## Neg Pred Value 0.7333 0.8889 0.94872
## Prevalence 0.4103 0.5385 0.05128
## Detection Rate 0.2051 0.5128 0.00000
## Detection Prevalence 0.2308 0.7692 0.00000
## Balanced Accuracy 0.7283 0.6984 0.50000
rf_model <- randomForest(motivasi_belajar ~ ., data = train_data, ntree = 500, importance = TRUE)
rf_pred <- predict(rf_model, val_data)
rf_confusion <- confusionMatrix(rf_pred, val_data$motivasi_belajar)
print("Random Forest Confusion Matrix:")
## [1] "Random Forest Confusion Matrix:"
print(rf_confusion)
## Confusion Matrix and Statistics
##
## Reference
## Prediction 1 2 3
## 1 11 1 0
## 2 5 20 2
## 3 0 0 0
##
## Overall Statistics
##
## Accuracy : 0.7949
## 95% CI : (0.6354, 0.907)
## No Information Rate : 0.5385
## P-Value [Acc > NIR] : 0.0008107
##
## Kappa : 0.5906
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: 1 Class: 2 Class: 3
## Sensitivity 0.6875 0.9524 0.00000
## Specificity 0.9565 0.6111 1.00000
## Pos Pred Value 0.9167 0.7407 NaN
## Neg Pred Value 0.8148 0.9167 0.94872
## Prevalence 0.4103 0.5385 0.05128
## Detection Rate 0.2821 0.5128 0.00000
## Detection Prevalence 0.3077 0.6923 0.00000
## Balanced Accuracy 0.8220 0.7817 0.50000
importance(rf_model)
## 1 2 3 MeanDecreaseAccuracy
## usia -0.9805839 -1.2533977 -0.366875474 -1.7937235
## jenis_kelamin -2.4665131 -1.1324294 0.009372684 -2.3778346
## nilai_rata_rata 8.2858240 7.4756168 7.039040547 12.7161690
## dukungan_orang_tua 9.1084476 2.7149209 4.983055790 9.1887702
## fasilitas_belajar 9.5440623 5.8642837 2.872415583 10.5891084
## jam_belajar_per_hari 5.7101147 3.7524759 2.923300331 6.9905398
## kehadiran_persen 12.7551007 2.9521001 2.762522505 10.6298991
## minat_pada_pelajaran 8.5298272 5.7337515 5.922519834 11.1315295
## kesulitan_ekonomi 5.9496490 -0.9725624 -1.221590210 3.0855486
## jarak_rumah_sekolah 0.9869363 -1.5802391 -1.576383582 -0.8122241
## MeanDecreaseGini
## usia 5.736621
## jenis_kelamin 1.542986
## nilai_rata_rata 16.081183
## dukungan_orang_tua 6.182150
## fasilitas_belajar 7.643212
## jam_belajar_per_hari 13.478781
## kehadiran_persen 17.435629
## minat_pada_pelajaran 7.942051
## kesulitan_ekonomi 3.437622
## jarak_rumah_sekolah 9.954677
varImpPlot(rf_model)
dt_model <- rpart(motivasi_belajar ~ ., data = train_data, method = "class")
rpart.plot(dt_model, extra = 104, box.palette = "GnBu", branch.lty = 3, shadow.col = "gray", nn = TRUE)
dt_pred <- predict(dt_model, val_data, type = "class")
dt_confusion <- confusionMatrix(dt_pred, val_data$motivasi_belajar)
print("Decision Tree Confusion Matrix:")
## [1] "Decision Tree Confusion Matrix:"
print(dt_confusion)
## Confusion Matrix and Statistics
##
## Reference
## Prediction 1 2 3
## 1 10 4 0
## 2 6 17 2
## 3 0 0 0
##
## Overall Statistics
##
## Accuracy : 0.6923
## 95% CI : (0.5243, 0.8298)
## No Information Rate : 0.5385
## P-Value [Acc > NIR] : 0.0372
##
## Kappa : 0.3938
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: 1 Class: 2 Class: 3
## Sensitivity 0.6250 0.8095 0.00000
## Specificity 0.8261 0.5556 1.00000
## Pos Pred Value 0.7143 0.6800 NaN
## Neg Pred Value 0.7600 0.7143 0.94872
## Prevalence 0.4103 0.5385 0.05128
## Detection Rate 0.2564 0.4359 0.00000
## Detection Prevalence 0.3590 0.6410 0.00000
## Balanced Accuracy 0.7255 0.6825 0.50000
svm_test_pred <- predict(svm_model, data_testing)
data_testing$motivasi_belajar_svm <- svm_test_pred
rf_test_pred <- predict(rf_model, data_testing)
data_testing$motivasi_belajar_rf <- rf_test_pred
dt_test_pred <- predict(dt_model, data_testing, type = "class")
data_testing$motivasi_belajar_dt <- dt_test_pred
hasil_prediksi <- data_testing[, c("usia", "jenis_kelamin", "nilai_rata_rata",
"motivasi_belajar_svm", "motivasi_belajar_rf", "motivasi_belajar_dt")]
print("Hasil Prediksi untuk 15 Siswa:")
## [1] "Hasil Prediksi untuk 15 Siswa:"
print(hasil_prediksi)
## usia jenis_kelamin nilai_rata_rata motivasi_belajar_svm motivasi_belajar_rf
## 1 15 1 90.2 2 2
## 2 19 0 79.6 2 2
## 3 17 0 66.9 1 1
## 4 20 1 85.6 2 2
## 5 16 1 65.9 1 1
## 6 21 0 70.8 2 2
## 7 21 0 86.3 2 2
## 8 19 1 84.3 2 2
## 9 17 0 79.5 2 2
## 10 18 0 74.4 2 2
## 11 16 1 76.9 1 1
## 12 15 1 81.9 1 1
## 13 17 1 83.2 2 2
## 14 17 0 65.2 1 2
## 15 20 1 62.0 1 1
## motivasi_belajar_dt
## 1 2
## 2 2
## 3 2
## 4 1
## 5 1
## 6 2
## 7 1
## 8 2
## 9 1
## 10 2
## 11 1
## 12 2
## 13 2
## 14 2
## 15 1
comparison <- data.frame(
Siswa = 1:15,
SVM = as.numeric(data_testing$motivasi_belajar_svm),
RandomForest = as.numeric(data_testing$motivasi_belajar_rf),
DecisionTree = as.numeric(data_testing$motivasi_belajar_dt)
)
print("Perbandingan Hasil Prediksi:")
## [1] "Perbandingan Hasil Prediksi:"
print(comparison)
## Siswa SVM RandomForest DecisionTree
## 1 1 2 2 2
## 2 2 2 2 2
## 3 3 1 1 2
## 4 4 2 2 1
## 5 5 1 1 1
## 6 6 2 2 2
## 7 7 2 2 1
## 8 8 2 2 2
## 9 9 2 2 1
## 10 10 2 2 2
## 11 11 1 1 1
## 12 12 1 1 2
## 13 13 2 2 2
## 14 14 1 2 2
## 15 15 1 1 1
agreement_svm_rf <- sum(data_testing$motivasi_belajar_svm == data_testing$motivasi_belajar_rf)
agreement_svm_dt <- sum(data_testing$motivasi_belajar_svm == data_testing$motivasi_belajar_dt)
agreement_rf_dt <- sum(data_testing$motivasi_belajar_rf == data_testing$motivasi_belajar_dt)
agreement_all <- sum(data_testing$motivasi_belajar_svm == data_testing$motivasi_belajar_rf &
data_testing$motivasi_belajar_rf == data_testing$motivasi_belajar_dt)
cat("\nKesepakatan antar model:\n")
##
## Kesepakatan antar model:
cat("SVM dan Random Forest:", agreement_svm_rf, "dari 15\n")
## SVM dan Random Forest: 14 dari 15
cat("SVM dan Decision Tree:", agreement_svm_dt, "dari 15\n")
## SVM dan Decision Tree: 9 dari 15
cat("Random Forest dan Decision Tree:", agreement_rf_dt, "dari 15\n")
## Random Forest dan Decision Tree: 10 dari 15
cat("Kesepakatan ketiga model:", agreement_all, "dari 15\n")
## Kesepakatan ketiga model: 9 dari 15
plot_data <- data.frame(
Siswa = rep(1:15, 3),
Model = rep(c("SVM", "Random Forest", "Decision Tree"), each = 15),
Prediksi = c(as.numeric(data_testing$motivasi_belajar_svm),
as.numeric(data_testing$motivasi_belajar_rf),
as.numeric(data_testing$motivasi_belajar_dt))
)
library(ggplot2)
ggplot(plot_data, aes(x = Siswa, y = Prediksi, color = Model)) +
geom_point(size = 4) +
geom_line(aes(group = Siswa), color = "gray", linetype = "dashed") +
scale_y_continuous(breaks = 1:3, labels = c("1", "2", "3")) +
labs(title = "Perbandingan Prediksi Motivasi Belajar dari Tiga Model",
x = "Siswa", y = "Prediksi Motivasi Belajar") +
theme_minimal()