神经网络分类器中的公式和训练的权重矩阵

时间:2016-05-19 06:35:17

标签: r neural-network

我在R中使用神经网络包来将神经网络分类器拟合到我的数据中。

net <- neuralnet(Y1+Y2+Y3~X1+X2+X3, binary.data, hidden=45,
rep=10, err.fct="ce", linear.output=FALSE)

现在我的问题是我的binary.data框架有300个特征向量和10个输出类。因此,如果我手动将这些目标和特征添加到Neuralnet分类器的公式中,那将非常繁琐。

在拟合数据后,训练过的权重在哪里?

由于我将神经网络与45个隐藏神经元,300个特征和10个类相匹配,因此我希望两个权重矩阵一个尺寸为300x45,另一个尺寸为45x10?

我会在哪里找到那些重量矩阵?

2 个答案:

答案 0 :(得分:1)

遗憾的是,neuralnet()需要您在函数内指定公式。您可以使用'paste'函数指定它,如@thothal的答案中所示。如果你想避免这种情况,你可以使用RSNNS包而不是'neuralnet',你可以用输入/输出数据帧的形式呈现你的整个输入和输出功能。

要查看权重,您可以使用plot.nn()gwplot(),但这不会为您提供矩阵输出。同样RSNNS包允许您通过对您的神经网络对象使用$getCompleteWeightMatrix后缀来提取矩阵形式的权重。

答案 1 :(得分:1)

因此,对于公式,您可以使用类似的东西(我使用lm,但使用公式接口的任何函数都是相同的原则):

dat <- as.data.frame(matrix(rnorm(100000), ncol = 100))
dat$y <- rnorm(NROW(dat))
mF <- formula(paste("y ~" , paste(names(dat)[-101], collapse = "+")))
lm(mF, data = dat)

因此,您自动生成formula并且您不必自己对整个公式进行硬编码,但您可以生成它。另一个选择是使用.限定符,该限定符读作公式中尚未出现的所有其他内容。

来自?formula

  

公式中有两种对'。'的特殊解释。该        通常的一个是模型拟合的“数据”参数        函数和意义'公式中不包含的所有列':        见'terms.formula'。在'update.formula'的上下文中,,        它意味着“以前在公式的这一部分中所做的事情”。