簡體   English   中英

混淆矩陣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) 這里的“時代”一詞改變了每個循環(通常您在循環中使用它,但我看不到它?)。 1:epochs無法按您認為的那樣工作。 它正在時代的第一個元素(5)和基本上說for(epoch in 1:5)其中時代為1,然后2,...,然后5.你想要什么樣for(epoch in epochs) ,如果你想要從1:1的每個紀元開始的序列,都應在循環中編寫。

同樣, 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
 }

但是我真的會專注於在您的for循環中沒有使用紀元,就像我在您的帖子中看到的那樣。 也許找出您想在哪里使用它...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM