簡體   English   中英

訪問xgboost r軟件包中的監視列表歷史記錄

[英]accessing watchlist history in xgboost r package

我正在使用xgboost R包執行多類分類任務。 這是我創建的用於說明問題的代碼(輸入和輸出是隨機生成的,因此結果當然是沒有意義的,這只是我玩弄並學習如何處理程序包的目的):

require(xgboost)
# First of all I set some parameters
featureNumber = 5
num_class = 4
obs = 1000

# I declare  a function that I will use to generate my categorical labels
generateLabels <- function(x,num_class){
  label <- 0
  if(runif(1,min=0,max =1) <0.1){
      label <- 0
  }else{
      label <- which.max(x) -1
      foo <- runif(1,min=0,max =1)
      if(foo > 0.9){label <- label + 1}
      if(foo < 0.1){label <- label - 1}
  }
  return(max(min(label,num_class-1),0))
}

# I generate a random train set and his labels
features <- matrix(runif(featureNumber*obs, 1, 10), ncol = featureNumber)
labels <- apply(features, 1, generateLabels,num_class = num_class) 
dTrain <- xgb.DMatrix(data = features, label = labels)

# I generate a random test set and his labels
testObs = floor(obs*0.25)
featuresTest <- matrix(runif(featureNumber*testObs, 1, 10), ncol = featureNumber)
labelsTest <- apply(featuresTest, 1, generateLabels, num_class = num_class) 
dTest <- xgb.DMatrix(data = featuresTest, label = labelsTest)

# I train the 
xgbm   <- xgb.train(data = dTrain, 
                  nrounds = 10,
                  objective = "multi:softprob", 
                  eval_metric = "mlogloss", 
                  watchlist = list(train=dTrain, eval=dTest),                          
                  num_class = featureNumber)

這可以按預期方式工作並產生預期的結果,以下幾行:

[0] train-mlogloss:1.221495 eval-mlogloss:1.292785
[1] train-mlogloss:0.999905 eval-mlogloss:1.121077
[2] train-mlogloss:0.846809 eval-mlogloss:1.014519
[3] train-mlogloss:0.735182 eval-mlogloss:0.942461
[4] train-mlogloss:0.650207 eval-mlogloss:0.891341
[5] train-mlogloss:0.580136 eval-mlogloss:0.851774
[6] train-mlogloss:0.524390 eval-mlogloss:0.827973
[7] train-mlogloss:0.475884 eval-mlogloss:0.815081
[8] train-mlogloss:0.435342 eval-mlogloss:0.799799
[9] train-mlogloss:0.402307 eval-mlogloss:0.789209

我無法實現的是存儲這些值以供以后使用。 是否有可能做到這一點? 調整參數將非常有幫助。

PS我知道我可以使用xgb.cv(包中包含的交叉驗證方法)獲得類似的結果; 但是我寧願使用這種方法來更好地控制發生的情況,而且,由於這些指標是經過計算的,因此在我看來,除了在屏幕上閱讀之外,沒有可能使用它們來浪費計算能力。

您可以使用xbgm$bestScorexbgm$bestInd訪問最佳回合參數

暫無
暫無

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

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