TidyModels:仅当概率为75%或更高时才归类为真 [英] Tidymodels: Classify as TRUE only if the probability is 75% or higher

查看:31
本文介绍了TidyModels:仅当概率为75%或更高时才归类为真的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个二进制分类问题,并使用了随机森林和Logistic回归。 根据conf_matcollect_metrics()collect_predictions的结果,我想将我的模型更改为仅当该模型的概率为75%或更高时才归类为真。我只是不知道在哪里指定这个变化。如果有人能给我一个提示,那就太棒了。我的直觉告诉我,它应该在型号规范中的某个地方,例如这里的某个地方,但可能我错了。

canc_rf_model <- rand_forest(
    mtry = tune(),
    min_n = tune(),
    trees = 500) %>%
  set_engine("ranger") %>%
  set_mode("classification")

canc_log_model <- logistic_reg() %>% 
  set_engine("glm") %>% 
  set_mode("classification")

提前谢谢您! M.

推荐答案

硬类预测来自基础ranger::predictions()函数,而不是来自函数,因此在匹配本身中没有什么可做的。

但是,如果您愿意,可以在试穿后非常流畅地更改此设置。让我们创建一个分类模型示例:

library(tidymodels)
#> Registered S3 method overwritten by 'tune':
#>   method                   from   
#>   required_pkgs.model_spec parsnip

data("ad_data")
alz <- ad_data

# data splitting
set.seed(100)
alz_split  <- initial_split(alz, strata = Class, prop = .9)
alz_train  <- training(alz_split)
alz_test   <- testing(alz_split)

# data resampling
set.seed(100)
alz_folds <- 
    vfold_cv(alz_train, v = 10, strata = Class)

rf_mod <-
    rand_forest(trees = 1e3) %>% 
    set_engine("ranger") %>% 
    set_mode("classification")

rf_wf <-
    workflow() %>% 
    add_formula(Class ~ .) %>% 
    add_model(rf_mod)

set.seed(100)
rf_preds <- rf_wf %>% 
    fit_resamples(
        resamples = alz_folds, 
        control = control_resamples(save_pred = TRUE)) %>% 
    collect_predictions()

以下是默认混淆矩阵:

rf_preds %>%
    conf_mat(Class, .pred_class)
#>           Truth
#> Prediction Impaired Control
#>   Impaired       37       5
#>   Control        45     213

您可以使用probably包对您的类别概率估计进行后处理,只需覆盖默认值:

library(probably)
#> 
#> Attaching package: 'probably'
#> The following objects are masked from 'package:base':
#> 
#>     as.factor, as.ordered

rf_preds %>%
    mutate(.pred_class = make_two_class_pred(.pred_Impaired, 
                                             levels(rf_preds$Class),
                                             threshold = 0.75),
           .pred_class = factor(.pred_class, levels = levels(rf_preds$Class))) %>%
    conf_mat(Class, .pred_class)
#>           Truth
#> Prediction Impaired Control
#>   Impaired        0       0
#>   Control        82     218

reprex package(v1.0.0)于2021-03-23创建

这篇关于TidyModels:仅当概率为75%或更高时才归类为真的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆