library(neuralnet) library(ggplot2)
# 결과 저장을 위한 데이터프레임 생성 max_results <- data.frame(i = integer(), j = integer(), k = integer(), a = numeric())
# for loop 실행 for (i in 1:10) { temp_results <- data.frame(i = integer(), j = integer(), k = integer(), a = numeric()) for (j in 1:7) { for (k in 1:4) { set.seed(1) concrete_model <- neuralnet( formula = strength ~ cement + slag + ash + water + superplastic + coarseagg + fineagg + age, data = train_data, hidden = c(i, j, k) ) result <- compute(concrete_model, test_data[, 1:8]) a <- cor(result$net.result, test_data[, 9]) print(paste('h1:' , i, 'h2:', j, 'h3:', k, a)) # 결과를 임시 데이터프레임에 저장 temp_results <- rbind(temp_results, data.frame(i = i, j = j, k = k, a = a)) } } # i 값에 대한 최대 a 값 찾기 max_a_row <- temp_results[which.max(temp_results$a), ] max_results <- rbind(max_results, max_a_row) }
# 그래프 그리기 ggplot(max_results, aes(x = factor(paste(i, j, k, sep = ",")), y = a)) + geom_bar(stat = "identity", aes(fill = a)) + labs(title = "은닉층별 뉴런 갯수", x = "(i, j, k)", y = "정확도") + theme_minimal() + theme(axis.text.x = element_text(angle = 45, hjust = 1)) + scale_fill_gradient(low = "blue", high = "red")+ coord_cartesian(ylim = c(0.8, 1.0)) |