具有 ROC 分析的 KNN 分类器

Posted

技术标签:

【中文标题】具有 ROC 分析的 KNN 分类器【英文标题】:KNN classifier with ROC Analysis 【发布时间】:2013-03-08 03:18:40 【问题描述】:

我编写了以下代码来获取我的 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的所有分数?非常感谢。

一个。

【问题讨论】:

【参考方案1】:

我不熟悉perfcurve,但您是否尝试过使用 MALAB 帮助。 在 MATLAB 工作区中,只需键入:help perfcurve,您就会得到很多帮助。 同样在 MATWORKS 网站上也有帮助页面,例如您的案例,请查看: http://www.mathworks.com/help/stats/perfcurve.html

【讨论】:

以上是关于具有 ROC 分析的 KNN 分类器的主要内容,如果未能解决你的问题,请参考以下文章

如何从具有 2 个输出神经元的 softmax 二元分类器绘制 ROC 曲线?

使用交叉验证的 KNN 分类器

KNN分类器最近邻分类KD树KNN分类的最佳K值基于半径的最近邻分类器KNN多分类KNN多标签分类KNN多输出分类KNN分类的优缺点

机器学习算法篇之KNN图像识别分类器构建

KNN 分类器算法不适用于所有情况

R构建KNN分类器实战