TPR&;不同分类器的FPR曲线-kNN、朴素贝叶斯、R中的决策树

TPR&;不同分类器的FPR曲线-kNN、朴素贝叶斯、R中的决策树,r,machine-learning,classification,roc,R,Machine Learning,Classification,Roc,我试图理解并绘制不同类型分类器的TPR/FPR。我在R中使用kNN、NaiveBayes和决策树。使用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(d

我试图理解并绘制不同类型分类器的TPR/FPR。我在R中使用kNN、NaiveBayes和决策树。使用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")
问题是如何使用它来绘制ROC曲线,以及为什么在kNN中我得到一个向量,而对于其他分类器,我将它们分别用于两个类?

ROC曲线 您为
knn11
分类器提供的ROC曲线看起来不太正确-它位于对角线下方,表示分类器在不到50%的时间内正确分配了类标签。最可能发生的情况是您提供了错误的类标签或错误的概率。如果在培训中使用了0和1的类标签-这些相同的类标签应以相同的顺序传递到ROC曲线(不使用0和1翻转)

另一个不太可能的可能性是,您有一个非常奇怪的数据集

其他分类器的概率 ROC曲线用于从雷达上调用事件。从技术上讲,它与预测一个事件密切相关,即你正确地猜测从雷达接近的飞机的偶数的概率。所以它使用一个概率。当有人对两个“命中”概率不明显的类进行分类时,这可能会令人困惑,比如在您的案例中,您有案例和控件

然而,任何两类分类都可以用“命中”和“未命中”来命名——你只需要选择一个你称之为“事件”的类。在你的情况下,糖尿病可能被称为一个事件

因此,从这个表中:

你只需要选择一个概率——一个事件的概率——可能是“测试阳性”。另一个“测试阴性”只是
1-测试阳性
,因为当一个人有79%的几率患有糖尿病时,他同时“认为”这个人没有糖尿病的几率为21%。但是您只需要一个数字来表示这个想法,所以knn只返回一个,而其他分类器可以返回两个


我不知道您用于决策树的是哪个库,因此无法帮助完成分类器的输出。

看起来您根本就错了

理想情况下,KNN图类似于上面的图。这里有几点你可以使用

  • 在代码中计算距离
  • 在python中使用以下代码进行预测
  • 预测类
    print(model_name.predict(test))

    3个最近的邻居
    打印(型号名称:kneighbors(测试)[1])

    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
    
     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