我使用 python 创建了一个机器学习模型。默认情况下,随机森林使用0.5作为阈值来分配"is"或“否”(意味着如果该概率记录超过50%,则将其分配为"is",否则为“否”)。。
因此,我只想知道我们如何确定训练模型的最佳阈值(意味着在什么截止值下我们将获得最大"is") 这样我就可以提高模型的性能。
在 R 中,人们使用循环来确定最佳阈值。所以我想知道我们如何在 python 中做到这一点。
下面是相同的 R 代码 -
perform_fn_rf <- function(cutoff)
{
predicted_response <- as.factor(ifelse(rf_pred[, 2] >= cutoff, "YES", "NO"))
conf <- confusionMatrix(predicted_response, train_validation$Outcome.Status, positive = "YES")
acc <- conf$overall[1]
sens <- conf$byClass[1]
spec <- conf$byClass[2]
OUT_rf <- t(as.matrix(c(sens, spec, acc)))
colnames(OUT_rf) <- c("sensitivity", "specificity", "accuracy")
return(OUT_rf)
}
最佳答案
每个特征属于真阳性或真阴性组,改变阈值结果在敏感性和特异性之间变化,因此 ROC 有助于识别。根据您的情况选择阈值。例如,如果您想预测病毒爆发,则应选择阈值,以使假阴性最小化,以避免爆发。请引用 ROC 和 AUC ( Video )。
关于python - 如何确定机器学习模型的最佳阈值(随机森林),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57268033/