3

KNN 分類器の ROC のプロットを取得するために、次のコードを書きました。

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);

次に、FPR と TPR をプロットして ROC 曲線を得ることができます。

ただし、FPR と TPR は、私が独自の実装を使用して取得したものとは異なります。上記のものはすべてのポイントを表示するわけではありません。実際には、上記のコードは ROC に 3 つのポイントしか表示しません。私が実装したコードは、データのサイズが 150 であるため、ROC で 151 ポイントを表示します。

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];

perfcurveROC のすべてのポイントを出力できるように' ' を調整する方法を尋ねてもよろしいですか? どうもありがとう。

A.

4

1 に答える 1

1

私はよく知らないのperfcurveですが、MALABヘルプを使ってみましたか。MATLABワークスペースで「:help perfcurve」と入力するだけで、多くのヘルプが得られます。また、MATWORKS Webサイトには、ヘルプページもあります。たとえば、ケースについては、http: //www.mathworks.com/help/stats/perfcurve.htmlを参照してください。

于 2013-03-19T14:01:56.613 に答える