Nothing
#####################
# title: cvB
# description: leave one out cross-validation classification
# arguments:
# exprObj ExpressionSet
# classifLab character string specifying what covariate data
# to use for classification
# algofunc function object that calls the classification algorithm
# (can be created by makeCVFunc)
# value:
# object of class "classifCV"
# example:
# eset <- golubMerge[100:110,]
# cvtknn <- cvB(eset, "ALL.AML", makeCVFunc("knn", k=10) )
# cvtnb <- cvB(eset, "ALL.AML", makeCVFunc("naiveBayes") )
####################
setGeneric("cvB", function(exprObj, classifLab, algofunc, metric="euclidean", ...){
standardGeneric("cvB")
})
setMethod("cvB", c("ExpressionSet", "character", "ANY", "ANY"),
function(exprObj, classifLab, algofunc, metric, ...){
cl <- pData(exprObj)[[classifLab]]
dat <- exprs(exprObj)
dis <- dist(t(dat), method=metric)
n <- ncol(dat)
predCV <- cl
for( i in 1:n ){
predCV[i] <- algofunc(t(dat[,-i]), t(dat[,i]), cl[-i], ...)
}
tab <- table(predCV, cl)
diag(tab) <- 0
err <- paste(round(100*sum(tab)/length(cl),2), "%", sep="")
# new("classifCV", err=err, sampLabels=predCV, distMat=dis)
#out <- class::knn(trainDat, testDat, cl, k, l, prob, use.all)
new("classifOutput", method="knn",
predLabels=newPredClass(as.character(predCV)),
trainInds=trainInd, allClass=as.character(pData(exprObj)[[classifLab]]),
# predScores=newQualScore(attr(out,"prob")),
RObject=err, call=match.call(), distMat=dis)
})
#####################
# title: makeCVFunc
# description: creates function object for input to cvB
# arguments:
# algorithm character string specifying the name of the
# classification algorithm to be used
# must be either:
# knn, knn1, knn.cv, lvq1, lvq2, lvq3,
# olvq1, naiveBayes, svm, lda,
# qda, bagging, ipredknn,
# slda, randomForest, rpart, nnet, pamr
# (i.e. all classification algorithms in machLI
# except for knn.cv {class}, inbagg {ipred},
# inclass {ipred})
# ... additional parameters specific to the
# classification algorithm
# value:
# function object
# example:
# train <- c(sample(1:47, 23), sample(48:72, 12))
# aa <- pamrB(golubMerge[100:200,], train, "ALL.AML")
####################
makeCVFunc <- function(algorithm, ...){
if( algorithm == "knn" ){
resfunc <- function(train, test, lab){
class::knn(train, test, lab, ...)
}
}
if( algorithm == "knn1" ){
resfunc <- function(train, test, lab){
class::knn1(train, test, lab)
}
}
if( algorithm == "lvq1" ){
resfunc <- function(train, test, lab){
initbk <- class::lvqinit(train, lab, ...)
trbk <- class::lvq1(train, lab, initbk, ...)
class::lvqtest(trbk, test)
}
}
if( algorithm == "lvq2" ){
resfunc <- function(train, test, lab){
initbk <- class::lvqinit(train, lab, ...)
trbk <- class::lvq2(train, lab, initbk, ...)
class::lvqtest(trbk, test)
}
}
if( algorithm == "lvq3" ){
resfunc <- function(train, test, lab){
initbk <- class::lvqinit(train, lab, ...)
trbk <- class::lvq3(train, lab, initbk, ...)
class::lvqtest(trbk, test)
}
}
if( algorithm == "olvq1" ){
resfunc <- function(train, test, lab){
initbk <- class::lvqinit(train, lab, ...)
trbk <- class::olvq1(train, lab, initbk, ...)
class::lvqtest(trbk, test)
}
}
if( algorithm == "naiveBayes" ){
resfunc <- function(train, test, lab){
df <- data.frame(y=lab, train)
classifObj <- e1071::naiveBayes(y~., data=df, ...)
predict(classifObj, test, ...)
}
}
if( algorithm == "svm" ){
resfunc <- function(train, test, lab){
classifObj <- e1071::svm(train, lab, ...)
predict(classifObj, test, ...)
}
}
if( algorithm == "lda" ){
resfunc <- function(train, test, lab){
classifObj <- MASS::lda(train, grouping=lab, ...)
predict(classifObj, test, ...)$class
}
}
if( algorithm == "qda" ){
resfunc <- function(train, test, lab){
classifObj <- MASS::qda(train, grouping=lab, ...)
predict(classifObj, test, ...)$class
}
}
if( algorithm == "bagging" ){
resfunc <- function(train, test, lab){
df <- data.frame(y=lab, train)
classifObj <- ipred::bagging(y~., data=df, ...)
predict(classifObj, data.frame(test), type="class", ...)
}
}
if( algorithm == "ipredknn" ){
resfunc <- function(train, test, lab){
df <- data.frame(y=lab, train)
classifObj <- ipred::ipredknn(y~., data=df, ...)
ipred::predict.ipredknn(classifObj, data.frame(test), type="class", ...)
}
}
if( algorithm == "slda" ){
resfunc <- function(train, test, lab){
df <- data.frame(y=lab, train)
classifObj <- ipred::slda(y~., data=df, ...)
predict(classifObj, data.frame(test), ...)$class
}
}
if( algorithm == "randomForest" ){
resfunc <- function(train, test, lab){
classifObj <- randomForest::randomForest(train, y=lab, ...)
predict(classifObj, test, ...)
}
}
if( algorithm == "rpart" ){
resfunc <- function(train, test, lab){
df <- data.frame(train, y=lab)
classifObj <- rpart::rpart(y~., data=df, ...)
predict(classifObj, data.frame(test), type="class")
}
}
if( algorithm == "nnet" ){
resfunc <- function(train, test, lab){
df <- data.frame(train, y=lab)
classifObj <- nnet::nnet(y~., data=df, ...)
predict(classifObj, data.frame(test), type="class", ...)
}
}
if( algorithm == "pamr" ){
resfunc <- function(train, test, lab, threshold=1){
df <- list(x=t(train), y=lab)
classifObj <- pamr::pamr.train(df, ...)
pamr::pamr.predict(classifObj, matrix(test, ncol=1), threshold, ...)
}
}
resfunc
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.