2017-10-19 20 views
0

누군가 다음과 같이 도와주세요 : 캐럿 패키지가있는 xgboost 교육 모델을 기본 메트릭 RMSLE로 변경해야합니다. 기본적으로 RMSE에서 캐럿과 xgboost 기차 및 측정. 여기 r에있는 캐럿의 RMSLE 메트릭 만들기

코드의 라인은 다음과 같습니다

는 캐럿 형식

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

만들 제어 대상

control = trainControl(method = "cv", 
        number = 2,  
        summaryFunction = custom_summary) 

조정 매개 변수의 그리드를 만들 사용자 정의 요약 함수를 만들

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) 

내 모델

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 = function(data, lev = NULL, model = NULL) {
library(Metrics)
out = rmsle(data[, "obs"], data[, "pred"])
names(out) = c("rmsle")
out
}

: 그래서 여기

의 custom_summary 기능이 같아야합니다