将matlab原始代码的ROC曲线张贴出来供大家学习
来源:互联网 发布:js class 私有属性 编辑:程序博客网 时间:2024/04/28 06:30
对roc曲线的matlab原始代码贴出来,给出target的制作标准
function [tpr,fpr,thresholds] = roc(targets,outputs)%ROC Receiver operating characteristic.%% The receiver operating characteristic is a metric used to check% the quality of classifiers. For each class of a classifier,% threshold values across the interval [0,1] are applied to% outputs. For each threshold, two values are calculated, the% True Positive Ratio (the number of outputs greater or equal% to the threshold, divided by the number of one targets),% and the False Positive Ratio (the number of outputs greater% then the threshold, divided by the number of zero targets).%% For single class problems, [TPR,FPR,TH] = <a href="matlab:doc roc">roc</a>(T,Y) takes% a 1xQ target matrix T, where each element is either 1 or 0 indicating% class membership or non-menbership respectively, and 1xQ outputs Y of% values in the range [0,1].%% It returns three 1xQ vectors: the true-positive/positive ratios TPR,% the false-positive/negative ratios FPR, and the thresholds associated% with each of those values TH.%% For multi-class problems [TPR,FPR,TH] = <a href="matlab:doc roc">roc</a>(T,Y) takes% an SxQ target matrix T, where each column contains a single 1 value,% with all other elements 0. The row index of each 1 indicates which of S% categories that vector represents. It also takes an SxQ output matrix Y,% with values in the range [0,1]. The row indices of the largest elements in% each column of Y indicate the most likely class.%% In the multi-class case, all three values returned are 1xS cell arrays,% so that TPR{i}, FPR{i} and TH{i} are the ratios and thresholds for the% ith class.%% <a href="matlab:doc roc">roc</a>(T,Y) can also take a boolean row vector T, and row vector Y, in% which case two categories are represented by targets 1 and 0.%% Here a network is trained to recognize iris flowers the ROC is% calculated and plotted.%% [x,t] = <a href="matlab:doc iris_dataset">iris_dataset</a>;% net = <a href="matlab:doc patternnet">patternnet</a>(10);% net = <a href="matlab:doc train">train</a>(net,x,t);% y = net(x);% [tpr,fpr,th] = <a href="matlab:doc roc">roc</a>(t,y)% <a href="matlab:doc plotroc">plotroc</a>(t,y)%% See also PLOTROC, CONFUSION% Copyright 2007-2011 The MathWorks, Inc.nnassert.minargs(nargin,2);targets = nntype.data('format',targets,'Targets');outputs = nntype.data('format',outputs,'Outputs');% TOTO - nnassert_samesize({targets,outputs},{'Targets','Outputs'});if size(targets,1) > 1 warning(message('nnet:roc:Arguments'));endtargets = [targets{1,:}];outputs = [outputs{1,:}];numClasses = size(targets,1);known = find(~isnan(sum(targets,1)));targets = targets(:,known);outputs = outputs(:,known);if (numClasses == 1) % 务必保证分类的标签targets是0与1,而且1是正样本,0是负样本 targets = [targets; 1-targets]; outputs = [outputs; 1-outputs-eps*(outputs==0.5)]; [tpr,fpr,thresholds] = roc(targets,outputs); tpr = tpr{1}; fpr = fpr{1}; thresholds = thresholds{1}; return;endfpr = cell(1,numClasses);tpr = cell(1,numClasses);thresholds = cell(1,numClasses);for i=1:numClasses [tpr{i},fpr{i},thresholds{i}] = roc_one(targets(i,:),outputs(i,:));end%%function [tpr,fpr,thresholds] = roc_one(targets,outputs)numSamples = length(targets);numPositiveTargets = sum(targets);numNegativeTargets = numSamples-numPositiveTargets;thresholds = unique([0 outputs 1]);numThresholds = length(thresholds);sortedPosTargetOutputs = sort(outputs(targets == 1));numPosTargetOutputs = length(sortedPosTargetOutputs);sortedNegTargetOutputs = sort(outputs(targets == 0));numNegTargetOutputs = length(sortedNegTargetOutputs);fpcount = zeros(1,numThresholds);tpcount = zeros(1,numThresholds);posInd = 1;negInd = 1;for i=1:numThresholds threshold = thresholds(i); while (posInd <= numPosTargetOutputs) && (sortedPosTargetOutputs(posInd) <= threshold) posInd = posInd + 1; end tpcount(i) = numPosTargetOutputs + 1 - posInd; while (negInd <= numNegTargetOutputs) && (sortedNegTargetOutputs(negInd) <= threshold) negInd = negInd + 1; end fpcount(i) = numNegTargetOutputs + 1 - negInd;endtpr = fliplr(tpcount) ./ max(1,numPositiveTargets);fpr = fliplr(fpcount) ./ max(1,numNegativeTargets);thresholds = fliplr(thresholds);
0 0
- 将matlab原始代码的ROC曲线张贴出来供大家学习
- ROC曲线及其matlab实现ROC曲线的绘画
- ROC曲线及其matlab实现ROC曲线的绘画
- ROC曲线及其matlab实现ROC曲线的绘画
- ROC曲线的matlab技巧实现
- MATLAB画ROC曲线
- matlab plotroc 画roc曲线
- Python:机器学习的ROC曲线、AUC计算,以及相应的代码
- ROC曲线的绘制
- ROC曲线的绘制
- ROC曲线的绘制
- ROC曲线的概念
- ROC曲线的理解
- ROC曲线的理解
- ROC曲线和AUC值的python代码
- ROC曲线和AUC面积计算 matlab
- matlab ROC曲线(receiver operating characteristic)/AUC
- ROC曲线详解及matlab绘图实例
- jdbc的翻页技术
- Handler 实现简单的计时器
- Selenium 不支持高版本firefox
- 从google 代码仓库repo sync Android4.0 源代码
- Dtrace 资源库 URL 大全
- 将matlab原始代码的ROC曲线张贴出来供大家学习
- [水题][第一阶段-回归水题][HDOJ-2018]母牛的故事
- 黑马程序员_java GUI 三大布局使用
- 民警酒桌上赌玩 英雄联盟 少年挑战警察被
- Android UI 详解之LayoutInflater和setContentView
- 【FacebookSDK学习笔记】Facebook官方Demo例子简单分析
- Oracle逻辑存储结构---(一) 数据块
- 函数指针
- 排序高级之交换排序_奇偶排序