gpt4 book ai didi

r - 如何更改二元分类的阈值

转载 作者:行者123 更新时间:2023-11-30 08:38:45 25 4
gpt4 key购买 nike

我在 R 中训练了一个 GBM 模型。由于我试图预测一个非常罕见的情况,所以我得到了很多误报。我想将阳性(“良好”)情况的阈值从默认值更改为 0.7。这是到目前为止我的代码。

modFit.glm.ml <- train(as.factor(ml.training$one_lease)~., data=ml.training, method = "glm")
confusionMatrix(ml.testing$one_lease, predict(modFit.glm.ml, ml.testing), positive = "Good")

此代码可以工作,但它使用默认截止值。有人提到这可以通过预测函数实现,但我不知道该怎么做。

最佳答案

您尚未提供可重现的示例,因此这是一个使用虹膜数据集来预测虹膜是否属于 setosa 类型的示例:

dat <- iris
dat$positive <- as.factor(ifelse(dat$Species == "setosa", "s", "ns"))
library(caret)
mod <- train(positive~Sepal.Length, data=dat, method="glm")

要使用 0.5 以外的预测概率的截止值生成混淆矩阵,您可以使用您想要的任何截止值对 predict 函数返回的概率进行阈值处理:

confusionMatrix(table(predict(mod, type="prob")[,"s"] >= 0.25,
dat$positive == "s"))
# Confusion Matrix and Statistics
#
#
# FALSE TRUE
# FALSE 88 3
# TRUE 12 47
#
# Accuracy : 0.9
# 95% CI : (0.8404, 0.9429)
# No Information Rate : 0.6667
# P-Value [Acc > NIR] : 2.439e-11
#
# Kappa : 0.7847
# Mcnemar's Test P-Value : 0.03887
#
# Sensitivity : 0.8800
# Specificity : 0.9400
# Pos Pred Value : 0.9670
# Neg Pred Value : 0.7966
# Prevalence : 0.6667
# Detection Rate : 0.5867
# Detection Prevalence : 0.6067
# Balanced Accuracy : 0.9100
#
# 'Positive' Class : FALSE

关于r - 如何更改二元分类的阈值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32128879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com