假设我们在几列中有一个包含字符串的表'数据'.我们希望找到包含某个值的所有行的索引,或者更好的是,找到几个值中的一个.然而,该专栏未知.
我现在所做的是:
apply(df, 2, function(x) which(x == "M017"))
Run Code Online (Sandbox Code Playgroud)
其中df =
1 04.10.2009 01:24:51 M017 <NA> <NA> NA
2 04.10.2009 01:24:53 M018 <NA> <NA> NA
3 04.10.2009 01:24:54 M051 <NA> <NA> NA
4 04.10.2009 01:25:06 <NA> M016 <NA> NA
5 04.10.2009 01:25:07 <NA> M015 <NA> NA
6 04.10.2009 01:26:07 <NA> M017 <NA> NA
7 04.10.2009 01:26:27 <NA> M017 <NA> NA
8 04.10.2009 01:27:23 <NA> M017 <NA> NA
9 04.10.2009 01:27:30 <NA> M017 <NA> NA
10 04.10.2009 01:27:32 M017 <NA> <NA> NA …Run Code Online (Sandbox Code Playgroud) 我用来neuralnet训练神经网络。该包,更具体地说是 的绘图功能neuralnet,依赖于grid,它是去年以来的基础包。但是,除非我grid手动加载,否则绘图会失败:
AND <- c(rep(0,7),1)
OR <- c(0,rep(1,7))
binary.data <- data.frame(expand.grid(c(0,1), c(0,1), c(0,1)), AND, OR)
net <- neuralnet::neuralnet(AND + OR ~ Var1 + Var2 + Var3, binary.data,
hidden = 0, linear.output=FALSE)
if(requireNamespace("grid")) {
neuralnet::plot.nn(net)
}
> Error in plot.nn(net, rep = i, x.entry, x.out, radius, arrow.length, intercept, :
> could not find function "grid.newpage"
Run Code Online (Sandbox Code Playgroud)
使用library(grid)帮助,但我想避免这种情况,因为我想稍后在我自己的包中使用它。R 包建议使用requireNamespace,但这也没有帮助,正如我们在上面看到的。
grid::在对函数的所有调用前面添加grid并从源代码构建包解决了这个问题,但我想知道:这是预期的行为吗?查看 的来源neuralnet,我发现没有提及requireNamespace或library …
使用R和包neuralnet,我尝试模拟如下所示的数据:
这些是几天内以10分钟为间隔的温度读数(上面是2天的切口).使用下面的代码,我将神经网络拟合到数据中.可能有更简单的方法来建模这些确切的数据,但将来数据可能看起来很不一样.使用具有2个神经元的单个隐藏层给出了令人满意的结果:
这也适用于大多数层和神经元.然而,有一个隐藏层有一个神经元,偶尔有两层(在我的情况下分别为3和2个神经元),我的结果相当差,总是在同一个形状:
唯一随机的是初始化权重,所以我认为它与此相关.但是,我必须承认,我还没有完全掌握神经网络的理论.我想知道的是,糟糕的结果是由于局部最小值('神经网络'使用弹性反向传播,默认情况下重量回溯)我只是运气不好,或者我是否可以避免这种情况.我的印象是有一个最佳数量的隐藏节点用于拟合,例如2度,5度,10度的多项式.如果不是,那么我最好的行动方案是什么?学习率更高?错误阈值较小?提前致谢.
我还没有尝试调整rprop参数,所以解决方案可能就在那里.
码:
# DATA ----------------------
minute <- seq(0, 6*24 - 1)
temp <- rep.int(17, 6*24)
temp[(6*7):(6*20)] <- 20
n <- 10
dta <- data.frame(Zeit = minute, Status = temp)
dta <- dta[rep(seq_len(nrow(dta)), n), ]
# Scale everything
maxs <- apply(dta, 2, max)
mins <- apply(dta, 2, min)
nnInput <- data.frame(Zeit = dta$Zeit, Status = dta$Status)
nnInput <- as.data.frame(scale(nnInput, center = mins, scale = maxs - mins))
trainingData <- …Run Code Online (Sandbox Code Playgroud)