Question

I wrote following codes to get a plot of ROC for my KNN classifier:

load fisheriris;

features                                = meas;
featureSelcted                          = features;
numFeatures                             = size(meas,1);

%% Define ground truth
groundTruthGroup                        = species;

%% Construct a KNN classifier
KNNClassifierObject                     = ClassificationKNN.fit(featureSelcted, groundTruthGroup, 'NumNeighbors', 3, 'Distance', 'euclidean');

% Predict resubstitution response of k-nearest neighbor classifier
[KNNLabel, KNNScore]                    = resubPredict(KNNClassifierObject);

% Fit probabilities for scores
groundTruthNumericalLable           = [ones(50,1); zeros(50,1); -1.*ones(50,1)];
[FPR, TPR, Thr, AUC, OPTROCPT]          = perfcurve(groundTruthNumericalLable(:,1), KNNScore(:,1), 1);

Then we can plot the FPR vs TPR to get the ROC curve.

However, the FPR and TPR is different from what I got using my own implementation that the one above will not display all the points, actually, the codes above display only three points on the ROC. The codes I implemented will dispaly 151 points on the ROC as the size of the data is 150.

patternsKNN                             = [KNNScore(:,1), groundTruthNumericalLable(:,1)];
patternsKNN                             = sortrows(patternsKNN, -1);
groundTruthPattern                      = patternsKNN(:,2);

POS                                     = cumsum(groundTruthPattern==1);
TPR                                     = POS/sum(groundTruthPattern==1);
NEG                                     = cumsum(groundTruthPattern==0);
FPR                                     = NEG/sum(groundTruthPattern==0);

FPR                                     = [0; FPR];
TPR                                     = [0; TPR];

May I ask how to tune 'perfcurve' to let it output all the points for the ROC? Thanks a lot.

A.

Was it helpful?

Solution

I am not familiar with perfcurve but have you tried using MALAB help. in MATLAB workspace just type: help perfcurve and you get a lot of help there. Also on MATWORKS website there are help pages as well for example for your case take a look at: http://www.mathworks.com/help/stats/perfcurve.html

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top