我正在尝试使用不同的分类器(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?
答案 0 :(得分:0)
这确实不是直截了当的,因为k-nn分类器的输出不是通过阈值处理得出决策的分数,而是仅基于多数表决的决定。
我的建议:根据邻域中的班级比例定义分数,然后对此分数进行阈值计算ROC。松散地说,分数表示算法是多么确定;它的范围从-1(-1级的最大确定性)到+1(+1级的最大确定性)。
示例:对于k = 6,分数为
为每个数据点计算此分数后,可以将其输入标准ROC函数。