神经网络:
激活函数:将神经元的净输入信号转换成单一的输出信号,以便进一 步在网络中传播。
网络拓扑:描述了模型中神经元的数量以及层数和它们连接的方式。
训练算法:指定如何设置连接权重,以便抑制或增加神经元在输入信 号中的比重。
concrete.R:判断强度是否合格
concrete <- read.csv("concrete.csv")
str(concrete)
#缩放/归一化,定义函数
normalize <- function(x){
return ((x - min(x)) / (max(x) - min(x)))
}
concrete_norm <- as.data.frame(lapply(concrete, normalize))
summary(concrete_norm$strength)
summary(concrete$strength)
#取1-773行,所有列的数据,训练集
concrete_train <- concrete_norm[1:773,]
#测试集
concrete_test <- concrete_norm[774:1030,]
#neuralnet代表神经网络算法
concrete_model <-
neuralnet
(strength ~ cement + slag + ash + water + superplastic + coarseagg + fineagg + age, data=concrete_train)
#显示图像
plot(concrete_model)
#取到1-8列
concrete_test[1:8]
#模型和测试数据进行对比
model_results <- compute(concrete_model, concrete_test[1:8])
predicted_strength <- model_results$net.result
#计算相关系数
cor(predicted_strength, concrete_test$strength)
#hidden=5代表隐藏层5个节点
concrete_model2 <- neuralnet(strength ~ cement + slag + ash + water + superplastic + coarseagg + fineagg + age, data=concrete_train, hidden=5)
plot(concrete_model2)
model_results2 <- compute(concrete_model2, concrete_test[1:8])
predicted_strength2 <- model_results2$net.result
cor(predicted_strength2, concrete_test$strength)