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))