原文鏈接:http://tecdat.cn/?p=18149
當我們將CNN(卷積神經網絡)模型用於訓練多維類型的數據(例如圖像)時,它們非常有用。我們還可以實現CNN模型進行回歸數據分析。我們之前使用Python進行CNN模型回歸 ,在本文中,我們在R中實現相同的方法。
我們使用一維卷積函數來應用CNN模型。我們需要Keras R接口才能在R中使用Keras神經網絡API。如果開發環境中不可用,則需要先安裝。本教程涵蓋:
- 准備數據
- 定義和擬合模型
- 預測和可視化結果
- 源代碼
我們從加載本教程所需的庫開始。
-
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
接下來,我們將通過添加另一維度來重新定義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”優化器對其進行編譯。
-
-
-
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模型擬合和預測回歸數據。
最受歡迎的見解
1.r語言用神經網絡改進nelson-siegel模型擬合收益率曲線分析
3.python用遺傳算法-神經網絡-模糊邏輯控制算法對樂透分析
4.用於nlp的python:使用keras的多標簽文本lstm神經網絡分類
7.用於NLP的seq2seq模型實例用Keras實現神經機器翻譯