У меня есть следующие данные
- 100 вектор вероятностей (pred_prob)
- 100 вектор фактических результатов (правда)
- 20 векторов порогаточка для классификации ifelse (prob_seq)
Хотелось бы применить пороговую точку и сгенерировать матрицу путаницы в кадре данных.Я почти у цели, но мне пришлось жестко закодировать x> 0,5, но хотелось бы, чтобы это применялось вместо векторов из prob_seq)
pred_prob = runif(100, min=0, max=1)
truth = sample(0:1, 100, replace=T)
prob_seq <- seq(0.5,1,by=0.05)
row_n = length(pred_prob)
col_n = length(prob_seq)
class_table <- as.matrix(replicate(col_n, pred_prob), nrow = row_n,ncol = col_n)
class_table <- apply(class_table, 2, function(x) {factor(ifelse(x > 0.5,"1","0"))})
cm_list <- list()
library('caret')
for (i in 1:col_n)
{
cm_results <- confusionMatrix(table(class_table[,i], truth),positive = "1")
cm_list[[i]] <- cm_results$byClass[1:4]
names(cm_list)[i] <- prob_seq[i]
}
cm_list
data.frame(cm_list)
Хотелось бы видеть разные результаты по пороговым столбцам.В приведенном ниже примере используется статический х> 0,5.Нужна помощь в применении каждого x к вектору prob_seq
X0.5 X0.55 X0.6 X0.65 X0.7 X0.75 X0.8 X0.85 X0.9 X0.95 X1
Sensitivity 0.4464286 0.4464286 0.4464286 0.4464286 0.4464286 0.4464286 0.4464286 0.4464286 0.4464286 0.4464286 0.4464286
Specificity 0.5454545 0.5454545 0.5454545 0.5454545 0.5454545 0.5454545 0.5454545 0.5454545 0.5454545 0.5454545 0.5454545
Pos Pred Value 0.5555556 0.5555556 0.5555556 0.5555556 0.5555556 0.5555556 0.5555556 0.5555556 0.5555556 0.5555556 0.5555556
Neg Pred Value 0.4363636 0.4363636 0.4363636 0.4363636 0.4363636 0.4363636 0.4363636 0.4363636 0.4363636 0.4363636 0.4363636
Спасибо!