2016-11-04 3 views
3

가, 나는 data.frame 비슷한 일이에 처리해야 내가 필요차단 인자는 mlr 패키지의 makeClassifTask()에 어떻게 포함될 수 있습니까? <code>mlr</code> 패키지를 사용하여 일부 분류 작업에서

set.seed(pi) 
# Dummy data frame 
df <- data.frame(
    # Repeated values ID 
    ID = sort(sample(c(0:20), 100, replace = TRUE)), 
    # Some variables 
    X1 = runif(10, 1, 10), 
    # Some Label 
    Label = sample(c(0,1), 100, replace = TRUE) 
    ) 
df 

같은 ID와 함께 값을 유지하는 모델을 상호 검증, 내가 알고

https://mlr-org.github.io/mlr-tutorial/release/html/task/index.html#further-settings

우리는 작업에 차단 요소를 포함 할 수있다 : 튜토리얼. 이것은 일부 관측치가 "함께 소속되어 있음"을 나타내며 데이터를 훈련 및 재 샘플링을위한 테스트 세트로 분리 할 때 분리되어서는 안됨을 나타냅니다.

질문 : 어떻게이 차단 요인을 makeClassifTask에 포함시킬 수 있습니까?

불행히도 어떤 예도 찾을 수 없습니다.

답변

3

mlr의 버전은 무엇입니까? 블로킹은 잠시 동안 그 부분이되어야합니다. ,

df$ID = as.factor(df$ID) 
df2 = df 
df2$ID = NULL 
df2$Label = as.factor(df$Label) 
tsk = makeClassifTask(data = df2, target = "Label", blocking = df$ID) 
res = resample("classif.rpart", tsk, resampling = cv10) 

# to prove-check that blocking worked 
lapply(1:10, function(i) { 
    blocks.training = df$ID[res$pred$instance$train.inds[[i]]] 
    blocks.testing = df$ID[res$pred$instance$test.inds[[i]]] 
    intersect(blocks.testing, blocks.training) 
}) 
#all entries are empty, blocking indeed works! 
+0

당신 @jakob R 감사 나는 그것이 쉬운 것을 몰랐어요! : 당신은 여기에 데이터를 저장하기위한 예입니다 makeClassifTask

에 인수로 직접 찾을 수 있습니다 –