data(iris)
## First lets create the cost-benefit matrix
cb <- matrix(c(30,-100,-100,-100,60,-200,-100,-200,60),byrow=TRUE,ncol=3)
colnames(cb) <- paste("p",levels(iris$Species),sep=".")
rownames(cb) <- paste("t",levels(iris$Species),sep=".")
## This leads to the following cost-benefit matrix
## p.setosa p.versicolor p.virginica
## t.setosa 30 -100 -100
## t.versicolor -100 60 -200
## t.virginica -100 -200 60
## Now learning a model
library(rpart)
idx <- sample(1:nrow(iris),as.integer(0.7*nrow(iris)))
tr <- iris[idx,]
ts <- iris[-idx,]
ct <- rpart(Species ~ ., tr)
prob.preds <- predict(ct,ts)
noprob.preds <- predict(ct,ts,type="class")
metacost.preds <- metacostClassif(prob.preds,cb)
table(noprob.preds,metacost.preds)
table(noprob.preds,ts$Species)
table(metacost.preds,ts$Species)
Run the code above in your browser using DataLab