【问题标题】:R - Given a vector of probabilities, how to find a threshold such that exactly n elements will be classified positive?R - 给定一个概率向量,如何找到一个阈值,使得恰好 n 个元素被分类为正数?
【发布时间】:2020-01-01 19:37:51
【问题描述】:

假设我有一个概率向量

> probs <- c(0.2, 0.3, 0.5, 0.7, 0.8, 0.9)
> probs
[1] 0.2 0.3 0.5 0.7 0.8 0.9

我想通过将每个元素与某个阈值进行比较来将其分类为正面或负面(为了论证,假设概率 >= 阈值的元素将被分类为正面,否则被视为负面)。我不知道我想使用什么阈值,但我知道我想要将 3 个元素归类为正值。

我自己的解决方案是检查所有概率并尝试将每个概率用作阈值并测试它是否会产生所需数量的阳性结果。

> sum(probs >= 0.2)
[1] 6
> sum(probs >= 0.3)
[1] 5
> sum(probs >= 0.5)
[1] 4
> sum(probs >= 0.7)
[1] 3

R(包括库)中是否有任何功能可以提供开箱即用的功能?

编辑:这个问题有一个相当简单的解决方案(因此使专用功能过时),因此我会接受最佳解决方案,即使它没有回答问题

【问题讨论】:

    标签: r classification


    【解决方案1】:

    你可以sort向量降序选择nth值

    n <- 3
    sort(probs, decreasing = TRUE)[n]
    #[1] 0.7
    

    order

    probs[order(-probs)[n]]
    #[1] 0.7
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-06
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      • 2015-01-18
      • 2020-08-08
      相关资源
      最近更新 更多