use*_*820 5 matlab knn confusion-matrix roc
我正在尝试使用不同的分类器(LDA,SVM,KNN)对包含两个类的数据集进行分类,并希望比较它们的性能.我通过修改先验概率为LDA制作了ROC曲线.
但是我如何为KNN分类器做同样的事情呢?
我搜索了文档,发现了一些功能:
Class = knnclassify(Sample, Training, Group, k)
mdl = ClassificationKNN.fit(X,Y,'NumNeighbors',i,'leaveout','On')
我可以运行(a)并通过使用留一法交叉验证来获得混淆矩阵,但是不可能改变先验概率来进行ROC?
我之前没有尝试过(b)但是这会创建一个模型,您可以在其中修改mdl.Prior.但我不知道如何获得混淆矩阵.
有没有我错过的选项或者可以解释如何充分利用这些功能获得ROC的人?
这确实并不简单,因为 k-nn 分类器的输出不是通过阈值得出决策的分数,而只是基于多数票的决策。
我的建议:根据邻域中类的比例定义一个分数,然后对该分数进行阈值计算 ROC。宽松地说,分数表达了算法的确定性;它的范围从 -1(-1 类的最大确定性)到 +1(+1 类的最大确定性)。
示例:对于 k=6,分数为
计算出每个数据点的分数后,您可以将其输入标准 ROC 函数。