如何使用Matlab得到ROC曲线的意思吗?

7视图(30天)
阿里Algomae
阿里Algomae 2016年9月1日
编辑: 沃尔特·罗伯森 2017年12月28日
我遇到一个问题情节意味着ROC曲线的10倍交叉验证使用Matlab。
我运行代码cvPartition = cvPartition (dataSize“k”10);获得10倍的训练和测试。然而,正如它随机选择训练和测试的数量。中华民国曲线从每个褶皱是不同的大小。另外,我想把这些十ROC曲线的平均民国从交叉验证。有人知道怎么做吗?我读了另一篇文章使用Python使用一维插值完全解决这个问题。不知道如何用Matlab。
所有的玻璃钢和TPR值:
FPR_All =
1到9
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0.2500 - 0.2000 0 0.1667 0.1667 0.1429 0.3333 0.2000 0
0.5000 0.4000 0.2500 0.3333 0.3333 0.2857 0.6667 0.4000 0.3333
0.7500 0.6000 0.5000 0.5000 0.5000 0.4286 1.0000 0.6000 0.6667
1.0000 0.8000 1.0000 0.8000 0.7500 0.6667 0.6667 0.5714南
南1.0000 1.0000 0.8333 0.8333 0.7143 1.0000南南
南南南南南南1.0000 - 1.0000 0.8571
南南南南南南南南1.0000
南南南南南南南南南
10
0
0
0.1429
0.2857
0.4286
0.5714
0.7143
0.8571
1.0000
TPR_All =
1到9
0 0 0 0 0 0 0 0 0
1.0000 1.0000 0.8333 1.0000 1.0000 1.0000 1.0000 1.0000 0.8571
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000南
南1.0000 1.0000 1.0000 1.0000 1.0000 1.0000南南
南南南南南南1.0000 - 1.0000 1.0000
南南南南南南南南1.0000
南南南南南南南南南
10
0
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000

答案(2)

埃里克
埃里克 2016年9月1日
我猜矩阵行roc曲线,每一个元素的数量每一列(ans后的几个南1)。然后你可以把每一行的平均值而取代NaN
矩阵(isnan(矩阵))= 1;%南替换为1
meanROC =意味着(矩阵,2);%的意思是行
这将告诉MATLAB的意思是沿着二维矩阵,即行。NaN必须替换的,否则均值函数将返回南南的每一行。结果是一个列向量与平均ROC-value。
1评论
阿里Algomae
阿里Algomae 2016年9月1日
编辑:沃尔特·罗伯森 2017年12月28日
好的,谢谢你的快速响应Erik;现在我使用perfcurve函数绘制10 roc曲线。
(玻璃钢,tpr, T, AUC) = perfcurve (test_Labelorginalouter级别1);
情节(玻璃钢,tpr)
我画roc曲线每一个褶皱和图10折叠在同一图,但是我不能画roc曲线的平均值。

登录置评。


Ilya
Ilya 2016年9月1日
使用 perfcurve 。看一看这张 文档 。通过正确的标签和预测分数作为细胞阵列,每折一个元素。你会得到均值曲线和置信区间。
5个评论
阿里Algomae
阿里Algomae 2016年9月8日
IIya博士感谢你们的答复,红色曲线的平均曲线。现在我有这个问题,有时所有值的TPR的而predected标签不等于测试标签,请帮我在哪里的问题。
模型= svmtrain (train_Labelorginalouter BestFeatureVector,“- s - t 0 - c 100”);% - c 128 - g .1250 / / - c 81920 - g。5
[predicted_label、准确性、水平]= svmpredict (test_Labelorginalouter、testdataouter模型);
AccuracyFoldouter (i) =精度(1,1);
% Vals = [0:0.1:1];
test_Labelorginalouter = num2cell (test_Labelorginalouter);
水平= num2cell(水平);
(X, Y, T, AUC) = perfcurve (test_Labelorginalouter,级别,1,“XVals”,0:.05:1);% [0 .05:1):
:TPR(我)= (Y (: 1)) ';
如果(所有(TPR(我:)= = 1))
disp (“检查”)
暂停
结束
我有一个警告:
警告:一个类中不存在至少一个二次抽样样品。你可能会得到NaN的信心。在perfcurve > > xytOneSample(第1347行)perfcurve > xyt / loopXYT internal.stats.parallel(第1315行)。smartForSliceout(第174行)在perfcurve > xyt(第1323行)perfcurve(第554行)crossvalindAlff2(第83行)

登录置评。

标签

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!