Q1: 我一直试图获得分类问题的AUC值,并一直试图在R中使用e1071和ROCR包。 ROCR有一个很好的例子“ROCR.simple”,它有预测值和标签值。
library(ROCR)
data(ROCR.simple)
pred<-prediction(ROCR.simpe$predictions, ROCR.simple$labels)
auc<-performance(pred,"auc")
这给出了AUC值,没问题。
我的问题是:如何获得上述示例中ROCR.simple$predictions
给出的数据类型?
我运行我的分析,如
library(e1071)
data(iris)
y<-Species
x<-iris[,1:2]
model<-svm(x,y)
pred<-predict(model,x)
到这里我很好。
那么我如何得到ROCR.simpe$predictions
给出的那种预测?
Q2:
有一个很好的例子涉及ROCR.xvals
。这是10个交叉验证的问题。
他们跑
pred<-prediction(ROCR.xval$predictions,ROCR.xval$labels)
auc<-performance(pred,"auc")
这给出了所有10个交叉验证的结果。
我的问题是:
我如何使用
model<-svm(x,y,cross=10) # where x and y are as given in Q1
并将预测和标签的所有10个结果放入ROCR.xvals
中给出的列表中?
答案 0 :(得分:4)
Q1。你可以用
pred<-prediction(as.numeric(pred), as.numeric(iris$Species))
auc<-performance(pred,"auc")
BUT。班级数不等于2。 ROCR目前仅支持二进制分类任务的评估(根据我得到的错误)
Q2。我不认为第二种可以按你想要的方式完成。我只能想到手工执行交叉验证,即
获取resample.indices(来自包peperr)
cv.ind <- resample.indices(nrow(iris), sample.n = 10, method = c("cv"))
x <- lapply(cv.ind$sample.index,function(x){iris[x,1:2]})
y <- lapply(cv.ind$sample.index,function(x){iris[x,5]})
然后为每个cv样本生成模型和预测
model1<-svm(x[[1]],y[[1]])
pred1<-predict(model1,x[[1]])
等。 然后你可以手动构建一个像ROCR.xval
这样的列表