annotate feature_selection.R @ 12:2472141aa295 draft default tip

Uploaded
author deepakjadmin
date Fri, 06 Jan 2017 05:23:45 -0500
parents d56ce97c4985
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
1 args <- commandArgs(T)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
2
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
3 arg1 <- args[1]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
4 arg2 <- args[2]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
5 arg3 <- args[3]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
6 arg4 <- args[4]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
7 arg5 <- args[5]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
8 arg6 <- args[6]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
9 arg7 <- args[7]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
10 arg8 <- args[8]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
11 arg9 <- args[9]
7
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
12 arg10 <- args[10]
5
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
13 library(caret)
7
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
14 library(doMC)
5
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
15 load(arg1)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
16
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
17 #RAWDATA <- dataX
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
18 #RAWDATA$outcome <- dataY
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
19
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
20
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
21 ###########################
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
22 Smpling <- arg9
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
23
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
24 if(Smpling=="downsampling")
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
25 {
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
26 dwnsmpl <- downSample(dataX,dataY)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
27 RAWDATA <- dwnsmpl[,1:length(dwnsmpl)-1]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
28 RAWDATA$outcome <- dwnsmpl[,length(dwnsmpl)]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
29 dataX <- RAWDATA[,1:length(dwnsmpl)-1]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
30 dataY <- RAWDATA[,"outcome"]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
31 remove("dwnsmpl")
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
32 }else if(Smpling=="upsampling"){
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
33 upsmpl <- upSample(dataX,dataY)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
34 RAWDATA <- upsmpl[,1:length(upsmpl)-1]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
35 RAWDATA$outcome <- upsmpl[,length(upsmpl)]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
36 dataX <- RAWDATA[,1:length(upsmpl)-1]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
37 dataY <- RAWDATA[,"outcome"]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
38 remove("upsmpl")
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
39 }else {
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
40 RAWDATA <- dataX
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
41 RAWDATA$outcome <- dataY
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
42 }
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
43
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
44
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
45
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
46
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
47 ##########################
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
48
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
49
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
50 rawData <- dataX
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
51 predictorNames <- names(rawData)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
52
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
53 isNum <- apply(rawData[,predictorNames, drop = FALSE], 2, is.numeric)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
54 if(any(!isNum)) stop("all predictors in rawData should be numeric")
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
55
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
56 colRate <- apply(rawData[, predictorNames, drop = FALSE],
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
57 2, function(x) mean(is.na(x)))
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
58 colExclude <- colRate > 0.1
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
59 if(any(colExclude)){
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
60 predictorNames <- predictorNames[-which(colExclude)]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
61 rawData <- RAWDATA[, c(predictorNames,"outcome")]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
62 } else {
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
63 rawData <- RAWDATA
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
64 }
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
65 rowRate <- apply(rawData[, predictorNames, drop = FALSE],
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
66 1, function(x) mean(is.na(x)))
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
67
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
68
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
69 rowExclude <- rowRate > 0
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
70 if(any(rowExclude)){
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
71 rawData <- rawData[!rowExclude, ]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
72 ##hasMissing <- apply(rawData[, predictorNames, drop = FALSE],
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
73 ##1, function(x) mean(is.na(x)))
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
74
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
75 ############################################################################
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
76
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
77
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
78 ###############################################################################
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
79 } else {
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
80 rawData <- rawData[complete.cases(rawData),]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
81
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
82 }
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
83
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
84 set.seed(2)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
85
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
86 #print(dim(dataX))
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
87 #print(dim(rawData))
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
88 #print(length(dataY))
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
89
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
90 nzv <- nearZeroVar(rawData[,1:(length(rawData) - 1)])
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
91 if(length(nzv) > 0) {
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
92 #nzvVars <- names(rawData)[nzv]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
93 rawData <- rawData[,-nzv]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
94 #rawData$outcome <- dataY
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
95 }
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
96
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
97 predictorNames <- names(rawData)[names(rawData) != "outcome"]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
98
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
99 dx <- rawData[,1:length(rawData)-1]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
100 dy <- rawData[,length(rawData)]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
101 corrThresh <- as.numeric(arg8)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
102 highCorr <- findCorrelation(cor(dx, use = "pairwise.complete.obs"),corrThresh)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
103 dx <- dx[, -highCorr]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
104 subsets <- seq(1,length(dx),by=5)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
105 normalization <- preProcess(dx)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
106 dx <- predict(normalization, dx)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
107 dx <- as.data.frame(dx)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
108
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
109 if (arg4 == "lmFuncs"){
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
110 ctrl1 <- rfeControl(functions = lmFuncs,
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
111 method = arg5 ,
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
112 repeats = as.numeric(arg6),
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
113 number = as.numeric(arg7),
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
114 verbose = FALSE)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
115 } else if(arg4 == "rfFuncs"){
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
116 ctrl1 <- rfeControl(functions = rfFuncs,
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
117 method = arg5 ,
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
118 repeats = as.numeric(arg6),
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
119 number = as.numeric(arg7),
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
120 verbose = FALSE)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
121 }else if (arg4 == "treebagFuncs"){
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
122 ctrl1 <- rfeControl(functions = treebagFuncs,
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
123 method = arg5 ,
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
124 repeats = as.numeric(arg6),
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
125 number = as.numeric(arg7),
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
126 verbose = FALSE)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
127 }else {
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
128
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
129 ctrl1 <- rfeControl(functions = nbFuncs,
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
130 method = arg5 ,
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
131 repeats = as.numeric(arg6),
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
132 number = as.numeric(arg7),
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
133 verbose = FALSE)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
134 }
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
135
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
136
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
137
7
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
138 if (as.numeric(arg10) == 1){
5
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
139 Profile <- rfe(dx, dy,sizes = subsets,rfeControl = ctrl1)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
140
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
141 pred11 <- predictors(Profile)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
142 save(Profile,file=arg2)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
143 dataX <- rawData[,pred11]
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
144 dataY <- rawData$outcome
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
145
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
146 save(dataX,dataY,file=arg3)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
147 rm(dataX)
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
148 rm(dataY)
7
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
149 } else if (as.numeric(arg10) > 1){
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
150 registerDoMC(cores = as.numeric(arg10))
5
016c69bfb2a1 Uploaded
deepakjadmin
parents:
diff changeset
151
7
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
152 Profile <- rfe(dx, dy,sizes = subsets,rfeControl = ctrl1)
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
153
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
154 pred11 <- predictors(Profile)
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
155 save(Profile,file=arg2)
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
156 dataX <- rawData[,pred11]
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
157 dataY <- rawData$outcome
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
158
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
159 save(dataX,dataY,file=arg3)
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
160 rm(dataX)
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
161 rm(dataY)
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
162 } else { stop("something went wrong. please see the parameters")}
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
163
d56ce97c4985 Uploaded
deepakjadmin
parents: 5
diff changeset
164