4
我的问题与此one有关,用table()
函数在R中产生混淆矩阵。我正在寻找一个解决方案,而不使用包装(例如脱字符号)。R创建2 * 2混淆矩阵的一般解决方案
比方说,这些都是我们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)
对于这些值,下面的解决方案能很好地创建一个2 * 2混淆矩阵,让我们说,阈值= 0.5 :
# 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
但是,我没有得到一个2×2矩阵,如果我选择是小于min(predictions)
或大于max(predictions)
任何价值,因为数据不会有任何一个或真或假的发生。例如:
conf_matrix <- as.matrix(table(predictions>0.05,labels))
conf_matrix
labels
0 1
TRUE 6 8
我需要一致地产生2×2的混淆矩阵为0和1之间的所有可能的阈值(决策边界),如我使用这个作为一个优化的输入的方法。有什么办法可以调整table
函数,所以它总是返回一个2 * 2的矩阵吗?
是的,谢谢!我试着玩'table()'参数,比如'dnn','exclude'。但相反,我应该已经形成了一个新的因素,说明不存在的阶级。 – Rhubarb 2014-09-11 13:52:26