資源簡介
繪制roc曲線求AUC值,用以評價分類指標(biāo)
代碼片段和文件信息
function?auc?=?plotroc(yxparams)
%plotroc?draws?the?recevier?operating?characteristic(ROC)?curve.
%
%auc?=?plotroc(training_label?training_instance?[?libsvm_options?-v?cv_fold])?
%??Use?cross-validation?on?training?data?to?get?decision?values?and?plot?ROC?curve.
%
%auc?=?plotroc(testing_label?testing_instance?model)?
%??Use?the?given?model?to?predict?testing?data?and?obtain?decision?values
%??for?ROC
%
%?Example:
%???
%? load(‘heart_scale.mat‘);?
%? plotroc(heart_scale_label?heart_scale_inst‘-v?5‘);
%
% [yx]?=?libsvmread(‘heart_scale‘);
%??? model?=?svmtrain(yx);
%? plotroc(yxmodel);
rand(‘state‘0);?%?reset?random?seed
if?nargin?2
help?plotroc
return
elseif?isempty(y)?|?isempty(x)
error(‘Input?data?is?empty‘);
elseif?sum(y?==?1)?+?sum(y?==?-1)?~=?length(y)
error(‘ROC?is?only?applicable?to?binary?classes?with?labels?1?-1‘);?%?check?the?trainig_file?is?binary
elseif?exist(‘params‘)?&&?~ischar(params)
model?=?params;
[predict_labelmsedeci]?=?svmpredict(yxmodel);?%?the?procedure?for?predicting
auc?=?roc_curve(deci*model.Label(1)y);
else
if?~exist(‘params‘)
params?=?[];
end
[paramfold]?=?proc_argv(params);?%?specify?each?parameter
if?fold?<=?1
error(‘The?number?of?folds?must?be?greater?than?1‘);
else
[decilabel_y]?=?get_cv_deci(yxparamfold);?%?get?the?value?of?decision?and?label?after?cross-calidation
auc?=?roc_curve(decilabel_y);?%?plot?ROC?curve
end
end
end
function?[resufold]?=?proc_argv(params)
resu=params;
fold=5;
if?~isempty(params)?&&?~isempty(regexp(params‘-v‘))
????????[fold_valfold_startfold_end]?=?regexp(params‘-v\s+\d+‘‘match‘‘start‘‘end‘);
????????if?~isempty(fold_val)
????????????[temp1fold]?=?strread([fold_val{:}]‘%s?%u‘);
????????????resu([fold_start:fold_end])?=?[];
????????else
????????????error(‘Number?of?CV?folds?must?be?specified?by?“-v?cv_fold“‘);
????????end
????end
end
function?[decilabel_y]?=?get_cv_deci(prob_yprob_xparamnr_fold)
l=length(prob_y);
deci?=?ones(l1);
label_y?=?ones(l1); ?
rand_ind?=?randperm(l);?
for?i=1:nr_fold?%?Cross?training?:?folding
test_ind=rand_ind([floor((i-1)*l/nr_fold)+1:floor(i*l/nr_fold)]‘);
train_ind?=?[1:l]‘;
train_ind(test_ind)?=?[];
model?=?svmtrain(prob_y(train_ind)prob_x(train_ind:)param); ???
[predict_labelmsesubdeci]?=?svmpredict(prob_y(test_ind)prob_x(test_ind:)model);
deci(test_ind)?=?subdeci.*model.Label(1);
label_y(test_ind)?=?prob_y(test_ind);
end
end
function?auc?=?roc_curve(decilabel_y)
[valind]?=?sort(deci‘descend‘);
roc_y?=?label_y(ind);
stack_x?=?cumsum(roc_y?==?-1)/sum(roc_y?==?-1);
stack_y?=?cumsum(roc_y?==?1)/sum(roc_y?==?1);
???
auc?=?sum((stack_x(2:length(roc_y)1)-stack_x(1:length(roc_y)-11)).*stack_y(2:length(roc_y)1))
????????%Comment?the?above?lines?if?using?perfcurve?of?statistics?toolbox
????????%[stack_xstack_ythreauc]=perfcurve(label_ydeci1);
?????????len=length(stack_x);
?????????l=1;
?????????for?i=1:10:len
?????????stack_x1(l)=?st
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3217??2013-06-01?16:30??plotroc.m
-----------?---------??----------?-----??----
?????????????????3217????????????????????1
- 上一篇:標(biāo)準(zhǔn)四步相移條紋
- 下一篇:異步電機矢量控制仿真
評論
共有 條評論