混淆矩阵,R,
CONFUSION MATRIX, R,
我在下面的代码中几乎不需要帮助。我必须设置一个循环,每次从 5 开始并添加 3 直到达到 20,以每次使用不同数量的训练数据训练神经网络模型。然后我必须计算一个折线图,显示不同数字的准确性时代。我还必须保持所有参数与显示的相同。大部分代码都是我们导师给的。我添加了 epochs= c(5,8,11,14,17,20)
来创建历元列表和 error.rate = vector()
,我打算在其中将每个循环的精度存储到一个向量中。我要的精度是从混淆矩阵中得到的,是从公式
中找到的
h2o.hit_ratio_table(<model>,train = TRUE)[1,2]
我面临的问题是我试图创建一个循环。我试图从每个循环中获取结果。我已将循环的第一部分标记为 X 以尝试将其放入向量中,以便将每个循环的精度放入向量 error.rate=h2o.hit_ratio_table(x,train=TRUE)[1,2])
.
但是,报错
> Error in is(object, "H2OModelMetrics") : object 'X' not found In
> addition: Warning messages: 1: In 1:epochs : numerical expression has
> 6 elements: only the first used
此外,当我删除 error.rate=......
部分时,函数运行正常,但无法找到准确值。
我是 R 的菜鸟,所以我将不胜感激。
s <- proc.time()
epochs= c(5,8,11,14,17,20)
error.rate = vector()
for (epoch in 1:epochs){#set up loop to go around 6 times
X=h2o.deeplearning(x = 2:785, # column numbers for predictors
y = 1, # column number for label
training_frame = train_h2o, # data in H2O format
activation = "RectifierWithDropout", # mathematical activation function
input_dropout_ratio = 0.2, # % of inputs dropout, because some inputs might not matter.
hidden_dropout_ratios = c(0.25,0.25,0.25,0.25), # % for nodes dropout, because maybe we don't need full connections. Improves generalisability
balance_classes = T, # over/under samples so that all classes are similar size.
hidden = c(50,50,50,50), # two layers of 100 nodes
momentum_stable = 0.99,
nesterov_accelerated_gradient = T,
error.rate=h2o.hit_ratio_table(x,train=TRUE)[1,2])
proc.time() - s}
您正在做 for(epoch in 1:epochs)
。这里 'epoch' 项改变了每个循环(通常你在循环中使用它,但我没有看到它?)。 1:epochs
不会像您认为的那样工作。它采用 epochs (5) 的第一个元素,基本上说 for(epoch in 1:5)
其中 epoch 是 1,然后是 2,... 然后是 5。你想要像 for(epoch in epochs)
这样的东西,如果你想要一个序列从代码中的 1:each 纪元开始,您应该在循环中编写它。
另外,x
每次循环都会重写。您应该初始化它并在每个循环中保存它的子集:
epochs= c(5,8,11,14,17,20)
x <- list() # save as list #option 1
y <- list() # for an option 2
for (epoch in epochs){ #set up loop to go around 6 times
X[[epoch]] = h2o.deeplearning(... )
# or NOW you can somehow use 1:epoch where each loop epoch changes
}
但我真正关注的是,正如我在 post 中看到的那样,在 for 循环中使用纪元是没有用的。也许找出你想在哪里使用它...
我在下面的代码中几乎不需要帮助。我必须设置一个循环,每次从 5 开始并添加 3 直到达到 20,以每次使用不同数量的训练数据训练神经网络模型。然后我必须计算一个折线图,显示不同数字的准确性时代。我还必须保持所有参数与显示的相同。大部分代码都是我们导师给的。我添加了 epochs= c(5,8,11,14,17,20)
来创建历元列表和 error.rate = vector()
,我打算在其中将每个循环的精度存储到一个向量中。我要的精度是从混淆矩阵中得到的,是从公式
h2o.hit_ratio_table(<model>,train = TRUE)[1,2]
我面临的问题是我试图创建一个循环。我试图从每个循环中获取结果。我已将循环的第一部分标记为 X 以尝试将其放入向量中,以便将每个循环的精度放入向量 error.rate=h2o.hit_ratio_table(x,train=TRUE)[1,2])
.
但是,报错
> Error in is(object, "H2OModelMetrics") : object 'X' not found In
> addition: Warning messages: 1: In 1:epochs : numerical expression has
> 6 elements: only the first used
此外,当我删除 error.rate=......
部分时,函数运行正常,但无法找到准确值。
我是 R 的菜鸟,所以我将不胜感激。
s <- proc.time()
epochs= c(5,8,11,14,17,20)
error.rate = vector()
for (epoch in 1:epochs){#set up loop to go around 6 times
X=h2o.deeplearning(x = 2:785, # column numbers for predictors
y = 1, # column number for label
training_frame = train_h2o, # data in H2O format
activation = "RectifierWithDropout", # mathematical activation function
input_dropout_ratio = 0.2, # % of inputs dropout, because some inputs might not matter.
hidden_dropout_ratios = c(0.25,0.25,0.25,0.25), # % for nodes dropout, because maybe we don't need full connections. Improves generalisability
balance_classes = T, # over/under samples so that all classes are similar size.
hidden = c(50,50,50,50), # two layers of 100 nodes
momentum_stable = 0.99,
nesterov_accelerated_gradient = T,
error.rate=h2o.hit_ratio_table(x,train=TRUE)[1,2])
proc.time() - s}
您正在做 for(epoch in 1:epochs)
。这里 'epoch' 项改变了每个循环(通常你在循环中使用它,但我没有看到它?)。 1:epochs
不会像您认为的那样工作。它采用 epochs (5) 的第一个元素,基本上说 for(epoch in 1:5)
其中 epoch 是 1,然后是 2,... 然后是 5。你想要像 for(epoch in epochs)
这样的东西,如果你想要一个序列从代码中的 1:each 纪元开始,您应该在循环中编写它。
另外,x
每次循环都会重写。您应该初始化它并在每个循环中保存它的子集:
epochs= c(5,8,11,14,17,20)
x <- list() # save as list #option 1
y <- list() # for an option 2
for (epoch in epochs){ #set up loop to go around 6 times
X[[epoch]] = h2o.deeplearning(... )
# or NOW you can somehow use 1:epoch where each loop epoch changes
}
但我真正关注的是,正如我在 post 中看到的那样,在 for 循环中使用纪元是没有用的。也许找出你想在哪里使用它...