R 中的神经网络公式

Neuralnet formula in R

我是 R 的初学者。

我正在尝试学习如何在 R 中制作神经网络并使用它们来预测输出。 我在网上找到了一个使用波士顿数据集的示例,并对其进行了调整以测试我的代码。它有效(我的 MSE 为 250 :( ) 但我无法理解这部分代码。

   n <- names(train_)
   f <- as.formula(paste("pred_con ~", paste(n[!n %in% "pred_con"], collapse = " + ")))
   nn <- neuralnet(f,data=train_,hidden=c(5,3),linear.output=T)
   pr.nn <- compute(nn,test_[,1:5])

有人可以解释一下这是如何工作的吗?谢谢!

我想你的意思是这段代码

   f <- as.formula(paste("pred_con ~", paste(n[!n %in% "pred_con"], collapse = " + ")))

所以让我们逐个分解。

f 是变量名。

as.formula 强制变量类型为 "formula" 类型。其中一般形式为Response~Variable_1+Variable_2。也就是说:使用变量 1 和变量 2 来预测响应值。

paste 是一个连接字符串片段的函数。所以

paste("Str","ing",sep="") 

会给出 "String",用 sep="" 表示给我一个 "" 输入之间的分隔。什么都没有

在您拥有的代码中,它在第二个粘贴函数中使用了 collapse = " + ",它在值之间放置了一个加号。

paste(n[!n %in% "pred_con"], collapse = " + ")

n 是 train_ 集合中列的名称

n <- names(train_)

所以 paste(n , collapse = " + ") 将使用每个列名称,它们之间有一个 + 号。

但是我们不想要 "pred_con" 我们试图预测的值。这在该行代码的前面部分进行了处理。

所以 n[!n %in% "pred_con"] 说的是每个名字,不是 "pred_con"。

所以从

paste(n[!n %in% "pred_con"], collapse = " + ")

除了 "pred_con"

之外,我们得到的每个列名之间都有一个 + 号

我们想要Y~X1+X2的公式

因此,使用另一个粘贴语句将 "pred_con" 粘贴到我们刚刚创建的列名列表之前。给我们:

paste("pred_con ~", paste(n[!n %in% "pred_con"], collapse = " + "))

最后,我们将其设为公式类型而不是字符串类型,因此我们用 as.formula 函数对其进行包装。

现在将我们带到整行:

 f <- as.formula(paste("pred_con ~", paste(n[!n %in% "pred_con"], collapse = " + ")))

最后两行只是使用了神经网络包的东西,所以我不会关注它。

 nn <- neuralnet(f,data=train_,hidden=c(5,3),linear.output=T)

这只是在训练您的神经网络。并将其存储为 "nn"

   pr.nn <- compute(nn,test_[,1:5])

这是预测 "test_" 集合的值,使用 "nn" 并将它们存储在 "pr.nn"