R语言实现CNN(卷积神经网络)模型进行回归数据分析

当我们将CNN(卷积神经网络)模型用于训练多维类型的数据(例如图像)时,它们非常有用。

由Kaizong Ye,Liao Bao撰写

我们还可以实现CNN模型进行回归数据分析。我们之前使用Python进行CNN模型回归 ,在本文中,我们在R中实现相同的方法。

我们使用一维卷积函数来应用CNN模型。我们需要Keras R接口才能在R中使用Keras神经网络API。如果开发环境中不可用,则需要先安装。本教程涵盖:

  1. 准备数据
  2. 定义和拟合模型
  3. 预测和可视化结果
  4. 源代码

我们从加载本教程所需的库开始。

library(keras)
library(caret)


准备

数据在本教程中,我们将波士顿住房数据集用作目标回归数据。首先,我们将加载数据集并将其分为训练和测试集。
 

set.seed(123)
boston = MASS::Boston
indexes = createDataPartition(boston$medv, p = .85, list = F)
 
train = boston[indexes,]
test = boston[-indexes,]

接下来,我们将训练数据和测试数据的x输入和y输出部分分开,并将它们转换为矩阵类型。

您可能知道,“ medv”是波士顿住房数据集中的y数据输出,它是其中的最后一列。其余列是x输入数据。
检查维度。
 

dim(xtrain)
[1] 432  13
 
dim(ytrain)
[1] 432   1

视频

CNN(卷积神经网络)模型以及R语言实现

探索见解

去bilibili观看

探索更多视频

接下来,我们将通过添加另一维度来重新定义x输入数据的形状。
 

dim(xtrain)
[1] 432  13   1
 
dim(xtest)
[1] 74 13  1


在这里,我们可以提取keras模型的输入维。
 

print(in_dim)
[1] 13  1

定义和拟合模型

我们定义Keras模型,添加一维卷积层。输入形状变为上面定义的(13,1)。我们添加Flatten和Dense层,并使用“ Adam”优化器对其进行编译。


R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)

阅读文章


 
 
model %>% summary()
________________________________________________________________________
Layer (type)                    Output Shape                  Param #    
========================================================================
conv1d_2 (Conv1D)               (None, 12, 64)                192        
________________________________________________________________________
flatten_2 (Flatten)             (None, 768)                   0          
________________________________________________________________________
dense_3 (Dense)                 (None, 32)                    24608      
________________________________________________________________________
dense_4 (Dense)                 (None, 1)                     33         
========================================================================
Total params: 24,833
Trainable params: 24,833
Non-trainable params: 0
________________________________________________________________________
 
​


 

接下来,我们将使用训练数据对模型进行拟合。

 
print(scores)
    loss 
24.20518



预测和可视化结果

现在,我们可以使用训练的模型来预测测试数据。


随时关注您喜欢的主题


predict(xtest)


我们将通过RMSE指标检查预测的准确性。
 

cat("RMSE:", RMSE(ytest, ypred))
RMSE: 4.935908


最后,我们将在图表中可视化结果检查误差。
 

x_axes = seq(1:length(ypred))
 
lines(x_axes, ypred, col = "red", type = "l", lwd = 2)
legend("topl

  在本教程中,我们简要学习了如何使用R中的keras CNN模型拟合和预测回归数据。


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498

关注有关新文章的微信公众号


永远不要错过任何见解。当新文章发表时,我们会通过微信公众号向您推送。

技术干货

最新洞察

This will close in 0 seconds