1

「分類精度」と「しきい値」のプロットを取得するために、次のコードを記述しました。

(データセットには、「良い」または「悪い」というラベルの付いた2つのクラスが含まれているグラウンドトゥルースがあります)

LDAClassifierObject                     = ClassificationDiscriminant.fit(featureSelcted, groundTruthGroup, 'DiscrimType', 'linear');
[LDALabel, LDAScore]                    = resubPredict(LDAClassifierObject);

[~, AccuracyLDA, Thr]                   = perfcurve(groundTruthNumericalLable(:,1), LDAScore(:,1), 1,'yCrit','accu');
figure,
plot(Thr,AccuracyLDA,'r-');
hold on;
plot(Thr,AccuracyLDA,'bo');
xlabel('Threshold for ''good'' Returns');
ylabel('Classification Accuracy');
grid on;

[maxVal, maxInd] = max(AccuracyLDA)

maxVal =

    0.8696

maxInd =

    15

Thr(15)

ans =

    0.7711

また、グラウンドトゥルースに「Good」または「Bad」というラベルの付いた2つのクラスが含まれている同じデータセットに対してROC分析を実行します。

[FPR, TPR, Thr, AUC, OPTROCPT]      = perfcurve(groundTruthGroup(:,1), LDAScore(:,1), 'Good');

OPTROCPT =

    0.1250    0.8667

なぜThr(15)=0.7711と違うのOPTROCPT(2)=0.8667ですか?

ROCによって得られる最良のカットオフポイント(つまり、最良のしきい値OPTROCPT)は、LDAの精度が最大のものですか?

または多分私は間違っています、それでは正確に何をperfcurve(groundTruthNumericalLable(:,1), LDAScore(:,1), 1,'yCrit','accu')教えてくれますか?

4

0 に答える 0