R中的神经网络公式

我是R语言的初学者。

我正在学习如何在R中创建神经网络并使用它们来预测输出。我在网上找到一个使用波士顿数据集的示例,并对其进行修改以测试我的代码。代码是有效的(我的均方误差是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 函数将变量类型强制转换为“公式”类型。它的通用形式是 Response~Variable_1+Variable_2。这表示:使用变量1和变量2来预测响应值。

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

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

会得到 “String”,其中 sep=”” 表示在输入之间不添加任何分隔符。

在你的代码中,它使用了 collapse = ” + “,这是在第二个 paste 函数中将值之间添加加号。

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

所以我们使用另一个 paste 语句将 “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” 中

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注