我正在尝试为预测模型生成一个roc(),因此需要来自extractProb()的概率。我跟随Max Kuhn的小插图作为指导。
当我运行extractPrediction()(下面的代码)时,我没有收到任何错误。
> predValues <- extractPrediction(models,
testX = testTransformed,
testY = test_death)
然而,当我运行extractProb()时,看似相同的代码,我收到一个错误:
(代码)
> 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()提供了FYI。我尝试使用test_death作为数字运行extractProb()。没运气。 testTransformed或test_death中没有NA。
我想做什么:
> 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 :(得分: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])
}
}
您可以调整代码。