R/feature_selection.R

Defines functions featureSelection

featureSelection <- function(x, y, method, features.no, shrink=T, x_raw=NULL){
  if(is.null(x_raw)){
    x_raw <- x
  }
  switch(method,
         "mRMR"={
           if(shrink){
             var_features <- apply(x_raw, MARGIN=2, sd, na.rm=T)
             mad_features <- apply(x_raw, MARGIN=2, mad, na.rm=T)
             temp <- which(var_features > quantile(var_features, .75, na.rm=T) & 
                             mad_features > quantile(mad_features, .75, na.rm=T))
             if(length(temp) > features.no){
               x <- x[, temp, drop=FALSE]
             }
           }
           
           f_data <- mRMR.data(data=as.data.frame(cbind(x, y), stringAsFactor=FALSE))
           features <- mRMR.ensemble(data=f_data,
                                     target_indices=ncol(x) + 1,
                                     feature_count=features.no,
                                     solution_count=1)
           features <- features@feature_names[unlist(features@filters)]
         },
         "variance"={
           var_features <- apply(x_raw, MARGIN=2, var, na.rm=T)
           features <- names(sort(var_features, decreasing=T))[1:features.no]
         },
         "mad"={
           var_features <- apply(x_raw, MARGIN=2, mad, na.rm=T)
           features <- names(sort(var_features, decreasing=T))[1:features.no]
         })
  return(features)
}
bhklab/PharmacoGxML documentation built on July 9, 2019, 2:44 a.m.