我写了一些代码来运行基于线性判别分析的分类:
%% Construct a LDA classifier with selected features and ground truth information
LDAClassifierObject = ClassificationDiscriminant.fit(featureSelcted, groundTruthGroup, 'DiscrimType', 'linear');
LDAClassifierResubError = resubLoss(LDAClassifierObject);
因此,我可以得到
Resubstitution Error of LDA (Training Error): 1.7391e-01
Resubstitution Accuracy of LDA: 82.61%
Confusion Matrix of LDA:
14 3
1 5
然后我为LDA分类器运行ROC分析:
% Predict resubstitution response of LDA classifier
[LDALabel, LDAScore] = resubPredict(LDAClassifierObject);
% Fit probabilities for scores (the groundTruthGroup contains lables either 'Good' or 'Bad')
[FPR, TPR, Thr, AUC, OPTROCPT] = perfcurve(groundTruthGroup(:,1), LDAScore(:,1), 'Good');
我有:
OPTROCPT =
0.1250 0.8667
因此,我们可以得到:
Accuracy of LDA after ROC analysis: 86.91%
Confusion Matrix of LDA after ROC analysis:
13 1
2 7
我的问题是:
在我们报告分类器的准确性时,我们应该使用哪个值,在ROC分析后我们获得了更好的准确度? ROC曲线到底能告诉我们什么或可以推断出什么?我们可以说在ROC分析后我们发现LDA分类器具有更好的准确度吗?
为什么ROC可以为分类器提供更好的准确性,但原来的ClassificationDiscriminant.fit不能?
我还对LDA分类器进行了交叉验证,比如
cvLDAClassifier = crossval(LDAClassifierObject,'leaveout','on');
那么如何获得交叉验证的ROC分析? 'resubPredict
'方法似乎只接受'判别对象'作为输入,那么我们如何得到分数?
4 .. classperf
Matlab的功能非常方便收集分类器的所有信息,如
%% Get the performance of the classifier
LDAClassifierPerformace = classperf(groundTruthGroup, resubPredict(LDAClassifierObject));
但是,有人知道如何收集交叉验证结果等准确性,FPR等信息吗?
非常感谢。我真的很期待看到上述问题的答复。
一个。