基于连续阈值查找分类指标向量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于连续阈值查找分类指标向量相关的知识,希望对你有一定的参考价值。

我有一组t个阈值,将我的数据向量y分为t-1个类别。

y <- runif(100)     # data vector
t <- c(0, 0.5, 1)   # threshold vector

在此示例中,类别1对应于满足0 < y < 0.5的数据点,类别2对应于满足0.5 < y < 1的数据点。要找到相应的类别矢量,可以使用一种幼稚的循环方法]

nc <- length(t) - 1                       # number of categories
categories <- numeric(length=length(y))   # vector of categories

for(cc in 1:nc)    # loop over categories

lower <- t[cc]      # lower bound for category cc
upper <- t[cc + 1]  # upper bound for category cc

cc.log <- (lower < y) & (y < upper) # logical vector where y satisfies thresholds
categories[cc.log] <- cc            # assign active category where thresholds are satisfied


是否有一种更容易且可扩展的解决方案,将数据向量y和阈值向量t作为输入并返回类别categories的向量?

答案

尝试一下

cut(y, t, labels = FALSE)
另一答案

一个简单的选择是findInterval

categories2 <- findInterval(y, t)
all.equal(categories, categories2)
#[1] TRUE

以上是关于基于连续阈值查找分类指标向量的主要内容,如果未能解决你的问题,请参考以下文章

精度分数错误:分类指标无法处理多类和连续目标的混合[重复]

LightGBM-分类指标不能处理二进制和连续目标的混合

携程实时智能检测平台建设实践

混淆矩阵值错误:分类指标无法处理二进制和连续目标的混合

f-score:ValueError:分类指标无法处理多标签指标和连续多输出目标的混合

Logistic 回归 - ValueError:分类指标无法处理连续多输出和二进制目标的混合