我的问题与在 R 中使用函数生成混淆矩阵有关table()
。我正在寻找不使用包(例如插入符号)的解决方案。
假设这些是我们predictions
的labels
二元分类问题:
predictions <- c(0.61, 0.36, 0.43, 0.14, 0.38, 0.24, 0.97, 0.89, 0.78, 0.86, 0.15, 0.52, 0.74, 0.24)
labels <- c(1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0)
对于这些值,下面的解决方案可以很好地为阈值 = 0.5 创建一个 2*2 混淆矩阵:
# Confusion matrix for threshold = 0.5
conf_matrix <- as.matrix(table(predictions>0.5,labels))
conf_matrix
labels
0 1
FALSE 4 3
TRUE 2 5
但是,如果我选择任何小于min(predictions)
或大于的值,我不会得到 2*2 矩阵max(predictions)
,因为数据不会出现 FALSE 或 TRUE,例如:
conf_matrix <- as.matrix(table(predictions>0.05,labels))
conf_matrix
labels
0 1
TRUE 6 8
我需要一种能够为 0 到 1 之间的所有可能阈值(决策边界)始终生成 2*2 混淆矩阵的方法,因为我将其用作优化中的输入。有没有办法可以调整table
函数,让它总是在这里返回一个 2*2 矩阵?