- Calculate the True Positive Rate (TPR) and False Positive Rate (FPR): TPR (also known as sensitivity or recall) is the ratio of true positives to the sum of true positives and false negatives. FPR is the ratio of false positives to the sum of false positives and true negatives.
- Generate the ROC curve: Plot the TPR against the FPR at various threshold settings.
- Compute the Area Under the Curve (AUC): The AUC represents the degree or measure of separability. It tells how much the model is capable of distinguishing between classes.

# roc plot

7 views (last 30 days)

Show older comments

area = roc(fileName,exp)

%

% fileName: The name of the output file. It is an image

% exp: a structure representing an experiment with three fields

% - exp.name: a string specifying the experiment name

% - exp.positive_n: the number of positive samples in the experiment

% - exp.likelihoods: likelihoods of each sample where the first

% exp.positive_n number of likelihoods belongs to the positive

% samples while others belong to the negative samples.

% area: a 1x1-dimensional cell array of the area under the roc curve.

true positive,false positive values of ground truth,edge detected image was calculated...then how apply these values to roc program...??????

##### 0 Comments

### Answers (1)

Sanchari
on 25 Jul 2024 at 3:47

Hello x,

To apply the true positive and false positive values to a ROC (Receiver Operating Characteristic) program, you need to follow these steps:

Here's a sample MATLAB function that generates the ROC curve and computes the AUC based on the given "exp" structure.

function area = roc(fileName, exp)

% Extract the fields from the exp structure

positive_n = exp.positive_n;

likelihoods = exp.likelihoods;

% Sort likelihoods and corresponding labels

[sorted_likelihoods, sorted_indices] = sort(likelihoods, 'descend');

labels = [ones(positive_n, 1); zeros(length(likelihoods) - positive_n, 1)];

sorted_labels = labels(sorted_indices);

% Initialize TPR and FPR

TPR = zeros(length(likelihoods) + 1, 1);

FPR = zeros(length(likelihoods) + 1, 1);

% Calculate TPR and FPR for each threshold

for i = 1:length(likelihoods)

TP = sum(sorted_labels(1:i));

FP = i - TP;

TPR(i+1) = TP / positive_n;

FPR(i+1) = FP / (length(likelihoods) - positive_n);

end

% Plot the ROC curve

figure;

plot(FPR, TPR, '-');

xlabel('False Positive Rate');

ylabel('True Positive Rate');

title(['ROC Curve: ', exp.name]);

grid on;

% Save the ROC curve as an image

saveas(gcf, fileName);

% Compute the Area Under the Curve (AUC)

area = trapz(FPR, TPR);

% Return the AUC as a 1x1-dimensional cell array

area = {area};

end

To use this function, you need to prepare your exp structure with the true positive and false positive values calculated from your ground truth and edge-detected images. Here's an example usage of this function:

% Example data

exp.name = 'Example Experiment';

exp.positive_n = 50; % Number of positive samples

exp.likelihoods = rand(100, 1); % Random likelihoods for demonstration

% File name to save the ROC curve image

fileName = 'roc_curve.png';

% Call the roc function

area = roc(fileName, exp);

% Display the Area Under the Curve (AUC)

disp(['Area Under the ROC Curve: ', num2str(area{1})]);

Please consider checking out this File Exchange link for the same: https://in.mathworks.com/matlabcentral/fileexchange/21318-roc-curves-and-area-under-of-them

Hope this helps!

##### 0 Comments

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!