2017-10-27 14 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]) 
    } 
} 

コードを変更することができます。

関連する問題