2016-04-14 6 views
2

私はxgboost Rパッケージを使用してマルチクラスの分類作業を行っています。 これは問題を説明するために作成するコードです(入力と出力はランダムに生成されるため、結果は意味をなさない)。xgboost rパッケージのウォッチリスト履歴にアクセスする

[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 

私は何を達成することはできませんが、後でそれらを使用するためにそれらの値を格納することです:

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) 

これは期待通りに動作し、期待される結果を生成し、ここでいくつかの行です。これは可能ですか?パラメータを調整することは非常に役に立ちます。

P.S.私はxgb.cv(パッケージに含まれている相互検証方法)を使用して同様の結果を得ることができることを知っています。これらのメトリックが計算されているので、画面上で読むことを離れて使用する可能性のない計算能力の無駄だと思われます。

答えて

0

あなたがxbgm$bestScorexbgm$bestInd

+0

で最高のラウンドのパラメータにアクセスすることができ、私は質問を編集し、完全なサンプルコードが含まれていましたが、コマンドは、あなたがNULLリターンを提案し、私は、ドキュメントでそれらを見つけることができませんでした。とにかく助けてくれてありがとう。 – zenagian