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

该博客主要围绕混凝土强度数据分析展开。先对数据进行粗处理和标准化,接着用神经网络训练模型,评估模型时得出预测强度与实际强度相关性为0.8064。最后通过设置不同隐藏层(4和5)提高模型性能,发现隐藏层为5时误差更小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 数据分析
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_normstrength)summary(concretestrength) summary(concretestrength)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_resultsnet.resultpredictedstrengthcor(predictedstrength,concretetestnet.result predicted_strength cor(predicted_strength,concrete_testnet.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)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值