library(nnet)
library(caret)
## Loading required package: ggplot2
## Loading required package: lattice
library(NeuralNetTools)
library(readxl)
library(writexl)
set.seed(123)
n <- 300
bp <- round(runif(n, 110, 180)) # Tekanan darah sistolik
glucose <- round(runif(n, 90, 200)) # Gula darah
bmi <- round(runif(n, 18, 40), 1) # BMI
risk <- ifelse(bp > 140 & glucose > 126 & bmi > 30, "High", "Low")
risk <- as.factor(risk)
patient_data <- data.frame(bp = bp, glucose = glucose, bmi = bmi, risk = risk)
write_xlsx(patient_data, "DATA-PASIEN-NEURAL NETWORK.xlsx")
patient_data <- read_excel("C:/Users/LENOVO D330/OneDrive/Documents/DATA-PASIEN-NEURAL NETWORK.xlsx")
patient_data$risk <- as.factor(patient_data$risk)
table(patient_data$risk)
##
## High Low
## 40 260
set.seed(456)
index <- createDataPartition(patient_data$risk, p = 0.7, list = FALSE)
train_data <- patient_data[index, ]
test_data <- patient_data[-index, ]
set.seed(789)
nn_model <- nnet(risk ~ ., data = train_data, size = 5, decay = 0.01, maxit = 200)
## # weights: 26
## initial value 161.561399
## iter 10 value 82.484952
## iter 20 value 82.440843
## iter 30 value 74.540346
## iter 40 value 74.425945
## iter 50 value 73.402606
## iter 60 value 60.446924
## iter 70 value 55.379436
## iter 80 value 36.294738
## iter 90 value 21.062841
## iter 100 value 20.789051
## iter 110 value 17.812539
## iter 120 value 13.112154
## iter 130 value 12.226054
## iter 140 value 12.036128
## iter 150 value 11.998123
## iter 160 value 11.987596
## iter 170 value 11.978109
## iter 180 value 11.970730
## iter 190 value 11.970470
## final value 11.970443
## converged
plotnet(nn_model)

head(test_data, 20)
## # A tibble: 20 × 4
## bp glucose bmi risk
## <dbl> <dbl> <dbl> <fct>
## 1 130 176 23.2 Low
## 2 177 133 31.9 High
## 3 117 129 30.8 Low
## 4 172 184 37.9 High
## 5 158 123 37 Low
## 6 160 94 26 Low
## 7 130 127 26 Low
## 8 125 161 34.5 Low
## 9 139 103 35.6 Low
## 10 143 133 19.9 Low
## 11 170 159 31.5 High
## 12 113 105 34.6 Low
## 13 166 147 28.5 Low
## 14 119 164 38 Low
## 15 163 136 19.2 Low
## 16 157 106 36.6 Low
## 17 141 176 19.6 Low
## 18 166 135 32.2 High
## 19 163 136 18.4 Low
## 20 154 128 29.5 Low
library(DT)
datatable(test_data, options = list(pageLength = 20))