我尝试过不同的matlab函数,比如plotr和R中的包,如pROC,ROCR和cvAUC。每个包或函数产生不同的图形,并给出与Weka结果不同的AUC。
我想使用10倍交叉验证来比较多个分类器,并希望将每个分类器设置为ROC。我在Weka收集了结果,但我不想在Weka本身中绘制它。
我的实验基于二进制类和多类数据。
我的Weka输出交叉验证实例预测位于https://drive.google.com/folderview?id=0BzRIG3kN-8Z9fnh5OElKTExNT2NuZUVna2tKcmMzU1VBankwdVc2OGxBSXFnaFJqSEhHYVE&usp=sharing
请建议我如何绘制二元类和多类附加结果的图形。
答案 0 :(得分:1)
这是占位符答案,但首先要注意的是,您的观察结果经过交叉验证的次数少于10次:
template <typename T, size_t ROWS, size_t COLS>
class matrix
...
给出了:
library(pROC)
library(dplyr)
filenameROC = "Data/term3_IBk_3_multiclass.txt"
fileROC = readLines(filenameROC)
dfCV = read.csv2(text = fileROC,
nrows = length(fileROC) - 51 - 19,
header = TRUE,
sep = ",",
skip = 19, stringsAsFactors = FALSE)
dfCV %>%
group_by(inst.) %>%
tally() %>%
filter(n < 10)
你能解释一下吗?
此外,您还需要添加交叉验证迭代标识符。一旦你这样做,这只是一个通过CV迭代从> dfCV %>%
+ group_by(inst.) %>%
+ tally() %>%
+ filter( n < 10)
Source: local data frame [1 x 2]
inst. n
1 773 4
包中运行multiclass.roc
的问题。
pROC
以下是通过CV折叠生成多类ROC的代码:
> dfCV %>%
+ group_by(inst.) %>%
+ tally()
Source: local data frame [773 x 2]
inst. n
1 1 10
2 2 10
3 3 10
4 4 10
5 5 10
6 6 10
7 7 10
8 8 10
9 9 10
10 10 10
.. ... ..
答案 1 :(得分:0)
我没有找到问题的确切解决方案。但是,我从Weka输出中观察到了一些观点
除此之外,我不明白Weka如何计算预测的阈值。我观察到,在相同的Weka预测输出中,我在Weka和R(和Matlab)中发现了不同的阈值。
最后,我使用Weka API代码绘制ROC Generate ROC Curve并提取实验的TPR和FPR(我重新运行所有实验)。提取TPR和FPR后,我可以在任何工具中绘制图形,如Excel,gnuplot,Matlab或R.