当前位置:  开发笔记 > 编程语言 > 正文

不同分类器的TPR和FPR曲线 - kNN,NaiveBayes,R中的决策树

如何解决《不同分类器的TPR和FPR曲线-kNN,NaiveBayes,R中的决策树》经验,为你挑选了0个好方法。

我正在尝试理解和绘制不同类型分类器的TPR/FPR.我在R中使用kNN,NaiveBayes和Decision Trees.对于kNN,我正在做以下事情:

clnum <- as.vector(diabetes.trainingLabels[,1], mode = "numeric")
dpknn <- knn(train = diabetes.training, test = diabetes.testing, cl = clnum, k=11, prob = TRUE)
prob <- attr(dpknn, "prob")
tstnum <- as.vector(diabetes.testingLabels[,1], mode = "numeric")
pred_knn <- prediction(prob, tstnum)
pred_knn <- performance(pred_knn, "tpr", "fpr")
plot(pred_knn, avg= "threshold", colorize=TRUE, lwd=3, main="ROC curve for Knn=11")

其中diabetes.trainingLabels [,1]是我要预测的标签(类)的载体,diabetes.training是训练数据,diabetest.testing是testing.data.

情节如下所示: 在此输入图像描述

存储在prob属性中的值是一个数字向量(0到1之间的小数).我将类标签因子转换为数字,然后我可以将它与ROCR库中的谓词/性能函数一起使用.不是100%肯定我做得对,但至少它是有效的.

对于NaiveBayes和Decision Trees tho,在预测函数中使用prob/raw参数我没有得到单个数字向量,而是列表或矩阵的向量,其中指定了每个类的概率(我猜),例如:

diabetes.model <- naiveBayes(class ~ ., data = diabetesTrainset)
diabetes.predicted <- predict(diabetes.model, diabetesTestset, type="raw")

和糖尿病.预测是:

     tested_negative tested_positive
     [1,]    5.787252e-03       0.9942127
     [2,]    8.433584e-01       0.1566416
     [3,]    7.880800e-09       1.0000000
     [4,]    7.568920e-01       0.2431080
     [5,]    4.663958e-01       0.5336042

问题是如何用它来绘制ROC曲线以及为什么在kNN中我得到一个向量而对于其他分类我将它们分别用于两个类?

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有