Skip to content

Instantly share code, notes, and snippets.

@joelkuiper
Created December 6, 2012 11:08
Show Gist options
  • Save joelkuiper/4223743 to your computer and use it in GitHub Desktop.
Save joelkuiper/4223743 to your computer and use it in GitHub Desktop.
creating AUC
library("ROCR")
library(plyr)
meshClasses <- list.files("partition0")
extractClass <- function(x) { a <- strsplit(x, "\\."); a[[1]][1] }
meshClasses <- sapply(meshClasses, function(x) { extractClass(x) })
getOriginal <- function(i, mesh) {
originalFile <- paste("partition", i, "/", mesh, ".libsvm", sep="")
x <- system(paste("cat ", originalFile ," | cut -c1-2", sep=""), intern=TRUE)
m <- as.table(matrix(x, byrow=TRUE, ncol=1))
as.data.frame(list(value=as.numeric(m[,1])))
}
getPredictions <- function(i, mesh) {
predictionsFile <- paste("out/", mesh, ".", i, ".out", sep="")
read.table(predictionsFile)
}
maxFold <- 7
lapply(meshClasses, function(mesh) {
frame <- data.frame(labels=rep(NA, maxFold), predictions=rep(NA, maxFold))
for (i in 0:maxFold) {
frame$labels[i] <- getOriginal(i, mesh)
frame$predictions[i] <- getPredictions(i, mesh)
}
frame
}) -> pred
lapply(pred, function(d) {
p <- prediction(d$predictions, d$labels)
perf <- performance(p, "auc")
vals <- unlist(attr(perf, 'y.values'))
data.frame(mean=mean(vals), sd.dev=sd(vals))
}) -> allAUC
df<- ldply(allAUC, data.frame)
df$.id <- sapply(df$.id, function(x) { substr(extractClass(x), 5, 1000L) } )
CATEGORIES := $(patsubst partition0/%.libsvm,%,$(wildcard partition0/*.libsvm))
FOLDS := 0 1 2 3 4 5 6 7
all: $(patsubst %,%.out,$(CATEGORIES))
clean:
rm -f *.train *.test *.model
dist-clean: clean
rm -f *.out
define category_targets
$(1).out: $$(patsubst %,$(1).%.out,$$(FOLDS))
touch $(1).out
$(1).%.out: $(1).%.test $(1).%.model
predict $$^ $$@ > $(1).$$*.log
.SECONDARY: $$(patsubst %,$(1).%.out,$$(FOLDS))
$(1).%.model: $(1).%.train
train -s 2 $$< $$@
.SECONDARY: $$(patsubst %,$(1).%.model,$$(FOLDS))
$(1).%.test: partition%/$(1).libsvm
cp $$< $$@
$(1).%.train: $$(patsubst %,partition%/$(1).libsvm,$$(FOLDS))
cat $$(filter-out partition$$*/$(1).libsvm,$$^) > $$@
endef
$(foreach category,$(CATEGORIES),$(eval $(call category_targets,$(category))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment