2017-10-19 7 views
0

誰かが私に助けてくれますか?キャレットパッケージを使用してxgboostトレーニングモデルをデフォルトのメトリックRMSLEに変更する必要があります。デフォルトでは、RMSEでキャレットとxgboost列車と計測が行われます。ここキャレットのRMSLEメトリックをrで作成する

は、コードの行は、次のとおり

チューニングパラメータ

grid = expand.grid(nrounds = 100, 
       max_depth = 6,   
       eta = 0.075,  
       gamma = 0, 
       colsample_bytree = 0.4, 
       min_child_weight = 2.25, 
       subsample = 1) 

cl = makeCluster(3, type="SOCK") #make clusters 

registerDoSNOW(cl) #register clusters 

set.seed(1) 
のグリッドを作成し、制御対象
control = trainControl(method = "cv", 
        number = 2,  
        summaryFunction = custom_summary) 

を作成キャレット形式で

custom_summary = function(data, lev = NULL, model = NULL){ 
out = rmsle(data[, "obs"], data[, "pred"]) 
names(out) = c("rmsle") 
out 
} 

をカスタム集計関数を作成します

は私のモデル

caret4 = train(price_doc~. - sub_area - id, 
        data=train.train, 
        method="xgbTree", 
        trControl=control, 
        tuneGrid=grid, 
        metric="rmsle", 
        maximize = FALSE) 

と、私はエラーを取得維持を訓練:{:タスク1が失敗しました - rmsle「『

答えて

0

』機能を見つけることができません」私はまた、私のプロジェクトで同じ問題に遭遇しました。 これは、以下のコマンドを使用してMetricsパッケージをメモリにロードした後でさえあります。
ライブラリ(メトリック)

あなたが表示された場合、rmsle機能はcustom_summaryと呼ばれる別の関数から呼び出されています。それは直接呼び出されません。 私は関数custom_summaryの中からMetricsパッケージをロードして、私の問題を解決しました。ので、ここで

、custom_summary機能は、次のようになります。

custom_summary = function(data, lev = NULL, model = NULL) {
library(Metrics)
out = rmsle(data[, "obs"], data[, "pred"])
names(out) = c("rmsle")
out
}

関連する問題