2017-10-27 2 views
0

예측 모델에 대해 roc()를 생성하려고하므로 extractProb()의 가능성이 필요합니다. 나는 Max Kuhn의 비 네트를 지침으로하고있다.R, Package- Caret, function extractProb()

extractPrediction() (아래 코드)을 실행할 때 오류가 표시되지 않습니다.

(코드)

> probValues <- extractProb(models, 
           testX = testTransformed,       
           testY = test_death) 

(오류)

> Error in `$<-.data.frame`(`*tmp*`, "obs", value = c(1L, 1L, 1L, 1L, 1L, 
      :replacement has 4216 rows, data has 6324 In addition: Warning messages: 
      1: In method$prob(modelFit = modelFit, newdata = newdata, submodels = param) : 
      kernlab class probability calculations failed; returning NAs 2: 
      In method$prob(modelFit = modelFit, newdata = newdata, submodels = param) : 
      kernlab class probability calculations failed; returning NAs 


> str(testTransformed) 
    'data.frame': 1054 obs. of 7 variables: 
$ moi.0  : num -1.497 0.667 -1.497 0.667 -1.497 ... 
$ moi.1  : num -0.388 -0.388 -0.388 -0.388 -0.388 ... 
$ moi.3  : num -0.302 -0.302 -0.302 -0.302 3.312 ... 
$ moi.4  : num 3.12 -0.32 3.12 -0.32 -0.32 ... 
$ gcs_tot : num -3.097 -1.776 0.204 0.534 0.534 ... 
$ tbi_surgery: num 1.831 1.831 1.831 -0.546 -0.546 ... 
$ time_2_hosp: num 0.0221 0.0191 0.0214 0.0261 0.0227 ... 

> str(test_death) 
Factor w/ 2 levels "0","1": 2 1 1 1 1 1 1 1 1 1 ... 

STR : 나는 extractProb(), 겉보기에 동일한 코드를 실행할 때

> predValues <- extractPrediction(models, 
          testX = testTransformed, 
          testY = test_death) 

는 그러나, 나는 오류가 발생()가 FYI에 제공됨. 나는 숫자로 test_death와 extractProb()를 실행 해 보았습니다. 불운. testTransformed 또는 test_death에는 NAs가 없습니다.

것은 내가 할 노력하고 무엇 :

> models  <- list(svm = svmFit, gbm = gbmFit) 
> probValues  <- extractProb(models, testX = testTransformed, 
         testY = test_death) 
> testProbs  <- subset(probValues, dataType == "Test") 
> svmProb <- subset(testProbs, model == "svmRadial") 
> svmROC <- roc(svmProb$pred, svmProb$obs) 

어떤 도움이 크게 감사합니다. 공손히.

답변

0

왜 확률을 계산하지 않습니까? 행렬의 각 요소의 확률을 원한다고 가정 해 봅시다.

prob <- vector() 
for(i in 1:length(yourdata)){ 
    his <- hist(yourdata, plot=F) 
    for(j in 1:length(his$density)){ 
     prob[i] <- his$density[i]*(his$breaks[i+1]-his$breaks[i]) 
    } 
} 

코드를 적용 할 수 있습니다.