Memanggil data Boston

library(MASS)
## Warning: package 'MASS' was built under R version 3.5.3
data("Boston")
data <- Boston
head(data)
##      crim zn indus chas   nox    rm  age    dis rad tax ptratio  black
## 1 0.00632 18  2.31    0 0.538 6.575 65.2 4.0900   1 296    15.3 396.90
## 2 0.02731  0  7.07    0 0.469 6.421 78.9 4.9671   2 242    17.8 396.90
## 3 0.02729  0  7.07    0 0.469 7.185 61.1 4.9671   2 242    17.8 392.83
## 4 0.03237  0  2.18    0 0.458 6.998 45.8 6.0622   3 222    18.7 394.63
## 5 0.06905  0  2.18    0 0.458 7.147 54.2 6.0622   3 222    18.7 396.90
## 6 0.02985  0  2.18    0 0.458 6.430 58.7 6.0622   3 222    18.7 394.12
##   lstat medv
## 1  4.98 24.0
## 2  9.14 21.6
## 3  4.03 34.7
## 4  2.94 33.4
## 5  5.33 36.2
## 6  5.21 28.7

Normalisasi data

max_data <- apply(data, 2, max) 
min_data <- apply(data, 2, min)
data_scaled <- scale(data,center = min_data, scale = max_data - min_data) 

Membuat data training dan testing

index = sample(1:nrow(data),round(0.75*nrow(data)))
train_data <- as.data.frame(data_scaled[index,])
test_data <- as.data.frame(data_scaled[-index,])

Membuat model neural network single hiden layer

library(neuralnet)
library(NeuralNetTools)
model <- neuralnet(medv~crim+zn+indus+chas+nox+rm+age+dis+rad+tax+ptratio+black+lstat,data=train_data,hidden=c(15,15,10,5),linear.output=F)
plotnet(model)

Prediksi dari data testing

prediksi <- compute(model,test_data[,1:13])
test_data$prediks <- prediksi

Melihat nilai eror

prediksi_start <- prediksi$net.result*(max(data$medv)-min(data$medv))+min(data$medv)
test_start <- as.data.frame((test_data$medv)*(max(data$medv)-min(data$medv))+min(data$medv))
MSE.model <- sum((test_start - prediksi_start)^2)/nrow(test_start)

#Hasil yang didapat dari nilai MSE :
MSE.model
## [1] 10.01794107