matlab - 带 ROC 分析的 KNN 分类器

标签 matlab roc

我编写了以下代码来获取 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上的三个点。我实现的代码将在 ROC 上显示 151 个点,因为数据大小为 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];

请问如何调整'perfcurve'以使其输出ROC的所有点?非常感谢。

A.

最佳答案

我不熟悉perfcurve,但您是否尝试过使用 MALAB 帮助。 在 MATLAB 工作区中,只需输入: help perfcurve 即可获得大量帮助。 另外,在 MATWORKS 网站上也有帮助页面,例如您的案例请查看: http://www.mathworks.com/help/stats/perfcurve.html

关于matlab - 带 ROC 分析的 KNN 分类器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15499669/

相关文章:

c - mex 代码在新的 matlab 版本/架构上崩溃

matlab - 从彩色背景中提取黑色对象

python - 在 sklearn 中使用留一法交叉验证的 ROC 曲线

r - 为什么我的 ROC 曲线看起来像 V 形?

matlab - 二次规划问题

c++ - 无法使用 CUDA + MATLAB + Visual Studio 检查全局内存

swift - Swift 中的 DFT 结果与 MATLAB 中的不同

r - 如何在 R 中为具有三个类别的 randomForest 模型绘制 ROC 曲线?

r - 在glmnet中绘制ROC曲线

r - 插入符号中训练数据的ROC曲线