R中的神经网络公式

阿迪特·桑格维(Adit Sanghvi)

我是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 =“”表示输入“”之间的分隔。没什么

在代码中,您使用的是crash =“ +”,它在第二个粘贴函数中的值之间加上了加号。

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])

这是使用“ nn”预测“ test_”集的值并将其存储在“ pr.nn”中

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章