我是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] 删除。
我来说两句