我使用ROCR包,我想知道一个人如何可以绘制ROC曲线中的R KNN模型? 有没有办法用这个包绘制这一切?
我不知道如何使用ROCR的预测功能KNN。 这里,我使用isolet数据集从UCI库,在这里我改名类属性为y我的例子:
cl<-factor(isolet_training$y)
knn_isolet<-knn(isolet_training, isolet_testing, cl, k=2, prob=TRUE)
现在的问题是,什么是传递给中华民国的预测函数的参数。 我试过2以下未工作方案:
library(ROCR)
pred_knn<-prediction(knn_isolet$y, cl)
pred_knn<-prediction(knn_isolet$y, isolet_testing$y)
有几个步骤,以在这里得到你ROC曲线来解决。 我只想做了一些数据,因为你没有提供让您正在使用的数据的简单方法。 需要注意的是ROCR
包想要类别标签为正/负,没有因素,因此,让他们这样。
# Generate fake data
isolet_training <- sweep(matrix(rnorm(400), 40, 10), 1, rep(0:1, each=20))
isolet_testing <- sweep(matrix(rnorm(400), 40, 10), 1, rep(0:1, each=20))
# Generate class labels
cl <- cl_testing <- rep(c(-1, 1), each=20)
现在,您可以训练你的KNN,并从获得同级车概率"prob"
属性。
knn_isolet <- class::knn(isolet_training, isolet_testing, cl, k=2, prob=TRUE)
prob <- attr(knn_isolet, "prob")
# you can probably use just `knn` instead of `class::knn`,
# but for some reason it did not work for me.
然而,他们来到一个窗体上ROCR
不接受,所以我们需要反转他们为-1
类和重新调整他们。
prob <- 2*ifelse(knn_isolet == "-1", 1-prob, prob) - 1
现在,您可以养活了“概率”到ROCR
包的功能并获得ROC曲线。
pred_knn <- prediction(prob, cl_testing)
pred_knn <- performance(pred_knn, "tpr", "fpr")
plot(pred_knn, avg= "threshold", colorize=T, lwd=3, main="Voilà, a ROC curve!")
pred_knn < -预测(knn_isolet $ Y,isolet_testing $ y)的
这条线会工作得很好,但根据文件,双方的观点必须是载体。
因此,首先要做:
knn_isolet $ Y < - as.vector(knn_isolet $ Y,模式= “数字”)
isolet_testing $ Y < - as.vector(isolet_testing $ Y,模式= “数字”)
注:ROCR只支持二元分类。 所以,检查是否在“knn_isolet $ Y”和“isolet_testing $ Y”水平具有相同的标签。