R语言-用神经网络构建混凝土强度分析模型

一、 数据分析
install.packages(“neuralnet”)
library(neuralnet)

#粗处理数据
concrete<-read.csv("/Users/wenfeng/Desktop/R&ML/机器学习和R语言/机器学习实验4 神经网络/concrete.csv")
str(concrete)
在这里插入图片描述
神经网络输入数据最好在0附近,但由上图可见数据在百千左右,我们需要将数据标准化。

normalize<-function(x){
return((x-min(x))/(max(x)-min(x)))
}
concrete_norm<-as.data.frame(lapply(concrete, normalize))
summary(concrete_norm s t r e n g t h ) s u m m a r y ( c o n c r e t e strength) summary(concrete strength)summary(concretestrength)
在这里插入图片描述

二、训练模型
#训练模型
concrete_train<-concrete_norm[1:773,]
concrete_test<-concrete_norm[774:1030,]
concrete_model<-neuralnet(strength~cement+slag+ash+water
+superplastic+coarseagg+fineagg+age,
data=concrete_train)
plot(concrete_model)
在这里插入图片描述
误差平方和为5.078,训练步数为8590

三、评估模型
#评估模型
model_results<-compute(concrete_model,concrete_test[1:8])
predicted_strength<-model_results n e t . r e s u l t p r e d i c t e d s t r e n g t h c o r ( p r e d i c t e d s t r e n g t h , c o n c r e t e t e s t net.result predicted_strength cor(predicted_strength,concrete_test net.resultpredictedstrengthcor(predictedstrength,concreteteststrength)
在这里插入图片描述
预测的混凝土强度与实际的强度的相关性为0.8064
四、提高模型性能
1.设置隐藏层为4
#提高模型性能
concrete_model22<-neuralnet(strength~cement+slag+ash+water
+superplastic+coarseagg+fineagg+age,
data=concrete_train,hidden=4)
plot(concrete_model22)
在这里插入图片描述

model_results22<-compute(concrete_model2,concrete_test[1:8])
predicted_strength22<-model_results22KaTeX parse error: Expected 'EOF', got '#' at position 12: net.result #̲predicted_stren…strength)
在这里插入图片描述
隐藏层为4时,误差平方和为2.244,训练步数为8324.预测值与实际值的相关性为0.92。误差减少了,相关性变大了,效果更好。

2、设置隐藏层为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_results2KaTeX parse error: Expected 'EOF', got '#' at position 12: net.result #̲predicted_stren…strength)
在这里插入图片描述
隐藏层为5时,误差平方和为1.688,训练步数为10185,相关系数为0.92。相比隐藏层为4时,误差变小了,但相关性系数没有变化。

完整代码如下:

install.packages("neuralnet")
library(neuralnet)

#粗处理数据
concrete<-read.csv("/Users/wenfeng/Desktop/R&ML/机器学习和R语言/机器学习实验4 神经网络/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)

#训练模型
concrete_train<-concrete_norm[1:773,]
concrete_test<-concrete_norm[774:1030,]
concrete_model<-neuralnet(strength~cement+slag+ash+water
                          +superplastic+coarseagg+fineagg+age,
                          data=concrete_train)
plot(concrete_model)

#评估模型
model_results<-compute(concrete_model,concrete_test[1:8])
predicted_strength<-model_results$net.result
predicted_strength
cor(predicted_strength,concrete_test$strength)

#提高模型性能
concrete_model22<-neuralnet(strength~cement+slag+ash+water
                            +superplastic+coarseagg+fineagg+age,
                            data=concrete_train,hidden=4)
plot(concrete_model22)

model_results22<-compute(concrete_model2,concrete_test[1:8])
predicted_strength22<-model_results22$net.result
#predicted_strength2
cor(predicted_strength22,concrete_test$strength)


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
#predicted_strength2
cor(predicted_strength2,concrete_test$strength)



  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值