python - 如何确定机器学习模型的最佳阈值(随机森林)

标签 python machine-learning deep-learning data-science

我使用 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/

相关文章:

python - 抓取两个页面时忽略请求

python - 在 Python 中将 .txt 文件转换为图像

python - PySpark 使用 IAM 角色访问 S3

machine-learning - 分层强化学习的实现

python - 如何检测python代码中的内存泄漏?

python - AttributeError : module 'torch' has no attribute '_six' . Pytorch 中的 Bert 模型

python - 如何在 magic 中设置 Cython language_level

machine-learning - 神经网络 MNIST : Backpropagation is correct, 但训练/测试精度非常低

image-processing - 当测试和训练数据集来自不同来源时,为什么测试准确性保持不变并且二元分类中的准确性不会增加

tensorflow - 减少 CNN (Conv1D) 文本分类模型中的误报