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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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