用人工神经网络对混泥土的强度strength进行建模** ----

Step 1: Exploring and preparing the data ----探索与准备数据

以下有8个描述混合物成分的特征

read in data and examine structure读入数据

concrete <- read.csv("F:\\rwork\\Machine Learning with R (2nd Ed.)\\Chapter 07\\concrete.csv")
str(concrete)

custom normalization function
自己写一个函数将数据转化为0-1之间

normalize <- function(x) { return((x - min(x)) / (max(x) - min(x)))}

apply normalization to entire data frame
应用上面的函数对数据进行处理

concrete_norm <- as.data.frame(lapply(concrete, normalize))

检查一下是否转化完成
confirm that the range is now between zero and one

summary(concrete_norm$strength)

compared to the original minimum and maximum

summary(concrete$strength)

create training and test data一部分做为训练数据,一部分作为测试数据

concrete_train <- concrete_norm[1:773, ]
concrete_test <- concrete_norm[774:1030, ]

Step 2: Training a model on the data ----训练模型

train the neuralnet model

#install.packages('neuralnet')#如果没有安装记得安装一下哦~
library(neuralnet)

simple ANN with only a single hidden neuron
单一隐藏节点的最简单的多层前馈网络

set.seed(12345) # to guarantee repeatable results
concrete_model <- neuralnet(formula = strength ~ cement + slag +ash + water + superplastic + coarseagg + fineagg + age,data = concrete_train)

visualize the network topology
网络拓扑结构可视化

plot(concrete_model)

对于8个特征中的每一个特征都有输入节点,后面跟着一个单一的隐藏节点和一个单一的预测混凝土的输出节点。
偏差项(bias term)也被描绘出来(通过带有数字1的节点表述)。
图的底部,R报告了训练的步数和误差平方和(SSE),较低的SSE意味着更好的预测性能

Step 3: Evaluating model performance ----评估模型性能

网络拓扑结构图让我们窥视了人工神经网络的黑箱,但是并没有提供更多关于模型拟合未来数据好坏的消息。
为了生成关于测试数据集的预测值,进行如下操作:
obtain model results

model_results <- compute(concrete_model, concrete_test[1:8])

compute和predict的运算原理不一样,它会返回一个带有两个分量的列表:
$neurons,用来储存网络中每一层的神经元;
$net.result,用来储存预测值

obtain predicted strength values

predicted_strength <- model_results$net.result#获得预测值

examine the correlation between predicted and actual values
计算预测值与真实值之间的相关性

cor(predicted_strength, concrete_test$strength)

相关性接近1表示两个变量之间具有很强的线性关系。因此,这里面大约为0.806的相关性表示具有一个相当强的线性关系。这意味着计数只有一个单一的隐藏点,我们的模型也做了相当不错的工作。
考虑到只用了一个隐藏点,因此我们模型的性能很可能可以提高。我们试着建立一个更好的模型。

Step 4: Improving model performance ----提高模型性能

a more complex neural network topology with 5 hidden neurons
这里我们将隐藏节点增加到5

set.seed(12345) # to guarantee repeatable results
concrete_model2 <- neuralnet(strength ~ cement + slag +ash + water + superplastic + coarseagg + fineagg + age,data = concrete_train, hidden = 5)

plot the network

plot(concrete_model2)

从图中我们可以发现SSE已经从原先的5.08降到了1.63。此外,训练步数也从4882增加到了86849,考虑到现在的模型已经变得多复杂,这也就不足为奇了。越复杂的神经网络需要越多的跌倒来找到最优的权重。

evaluate the results as we did before

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

采用相同的步骤对预测值和真实值进行比较,现在我们获取的相关系数大约为0.92,与之前具有的单个隐藏点的结果0.80相比,这是一个相当大的改进。

欢迎指正哦~~~(需要数据私聊邮箱哦~)

R语言实现 黑箱方法——神经网络相关推荐

  1. R语言实现 黑箱方法——支持向量机

    Support Vector Machines ------------------- Step 1: Exploring and preparing the data ---- read in da ...

  2. R语言使用回归方法解决方差分析问题

    R语言使用回归方法解决方差分析问题 线性回归与t检验等价: 线性回归与方差分析等价: 线性回归与协方差分析等价: ANOVA 和回归都是广义线性模型的特例. 案例1 回归分析做ANOVA librar ...

  3. R语言基于Bootstrap方法计算标准误差(std. error)实战

    R语言基于Bootstrap方法计算标准误差(std. error)实战 目录 R语言基于Bootstrap方法计算标准误差实战 #Bootstrapping计算标准误的流程

  4. 掌握R语言文件读取方法

    目标 掌握 R语言文件读取方法 学习笔记 utils包内Date Input用法 base包内readLines用法 stringi包内stri_read_lines xlsx包内Date Input ...

  5. R语言气象相关分析方法

    R语言气象相关分析方法(包括二进制文件R语言读取) ######读取热带印度洋海温场资料################# read.filename <- file("D:\\99\ ...

  6. 黑箱方法-神经网络①

    人工神经网络 人工神经网络的概念 人工神经网络(Artificial Neural Networks,ANN)是对一组输入信号和一组输出信号之间的关系进行建模,使用的模型来源于人类大脑对来自感觉输入的 ...

  7. R语言包安装方法,及优质包推荐

    R语言,之所以能成为统计学的"当红炸子鸡",因为它内置了海量统计函数,使用者可以利用其对数据进行快速的交互分析,在数据分析界是当之无愧的"瑞士军刀". 因此,通 ...

  8. Ubuntu18.04安装最新R语言环境的方法

    写在前面 最近学习R语言,在Windows环境配置很简单,但是导出的PDF不尽人意,于是选择Ubuntu来搞,可惜一开始我还是太天真,直接sudo apt install r-base了,导致安装的R ...

  9. R语言基本统计分析方法(包及函数)

    转载自:http://blog.csdn.net/s04023083/article/details/40344273 摘要:目前经典的统计学分析方法主要有回归分析,Logistic回归,决策树,支持 ...

最新文章

  1. 大脑简史(2)-研究大脑的手段
  2. matlab int8 矩阵,unit8_matlab数据类型转换——int8转换成unit8
  3. VTK:相互作用之KeypressEvents
  4. E - Another Postman Problem FZU - 2038
  5. Java日期及时间库插件 -- Joda Time.
  6. javascript中构造函数的说明
  7. NoSQL数据库:数据的一致性
  8. 融合Thread网路协议 ZigBee新版规范Q3出笼
  9. 手机基带芯片激荡 30 年!
  10. 集成hello到OpenDaylight发行版中
  11. 安装运行jupyter notebook时报错:ModuleNotFoundError: No module named 'prompt_toolkit.formatted_text'...
  12. python画汤姆猫简笔画_汤姆猫简笔画图片
  13. 前端传入JSON数组转换对象存入数据库
  14. 如何录屏制作gif图片
  15. Matlab 马尔可夫链预测双色球
  16. win7 、2008 提示Error 1606 Could Not Access Network Location %SystemDrive%/inetpub/wwwroot/ 的错误解决方法...
  17. js父元素获取子元素img_js 下获取子元素的方法
  18. 一个写着玩的 bitcoin 客户端
  19. 上海域格ASR和高通模块 USB端口分配及Linux下拨号说明
  20. 软件测试入门随笔——软件测试基础知识(七)

热门文章

  1. 火影手游服务器响应超时,lol手游链接超时,英雄联盟手游重新连接进不去
  2. RocketMQ DLedger架构在小米的大规模实践
  3. 腾讯云原生平台Crane获国家级科技奖,助力国家碳中和战略
  4. Python 基础语法:从注释到内置函数
  5. 幼儿园计算机培训新闻,幼儿园计算机培训的总结.docx
  6. 计算机专业优秀学生讲话演讲稿,计算机专业演讲稿.docx
  7. c#中使用redis
  8. Java程序员烂大街了?!找工作的硬核实力竟然是这些!
  9. 拼图游戏 Vue 版本
  10. 暗幽***风恋组工具包