forked from ChrisRackauckas/TBEEF
-
Notifications
You must be signed in to change notification settings - Fork 0
/
driver.py
130 lines (98 loc) · 3.73 KB
/
driver.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/usr/bin/python
import sys
import os
import random
import time
import multiprocessing as mproc
import subprocess as sproc
WORK_PATH = os.getcwd()
sys.path.append(WORK_PATH + '/PreProcess')
sys.path.append(WORK_PATH + '/Hybrid')
sys.path.append(WORK_PATH + '/PostProcess')
sys.path.append(WORK_PATH + '/Models/libFM')
sys.path.append(WORK_PATH + '/Models/SVDFeature')
sys.path.append(WORK_PATH + '/Models')
sys.path.append(WORK_PATH + '/utils')
import Model
import runModels
import setupModels
import utils
import hybrid
import synthesize
import post
import preProcess as pre
import config
#### Holds ####
RMSEPaths = []
userMovieRating = {} #Dictionary of user and movie ratings for de/re-effect
modelList = []
testPredictionPaths = []#Array of lists of paths
#where test predictions are saved
CVPredictionPaths = [] #Array of lists of paths
#where CV predictions are saved
processes = [] #Array of current processes
subprocesses = [] #Array of subproccesses
#--------------------------------------------------------------------
################## Timer ##########################
if config.TIME_RUN:
print("Start Timing")
start_time = time.time()
################### Pre-Process ###################
if config.PRE_PROCESS:
print("Pre-Processing")
pre.preProcess(os,utils,random,config.DE_EFFECT,userMovieRating,
config.TEST_SUBSET,config.PROCESS_TAGS,
config.PROCESS_SOCIAL,
config.PROCESS_HISTORY,processes,mproc)
print("Pre-Processing Complete")
################### Setup Models ###################
if config.SETUP_MODELS:
setupModels.setupModels(sys,os,utils,config,random,mproc,modelList)
################# Run Models ###################
if config.RUN_MODELS:
runModels.runModels(sproc,modelList,
testPredictionPaths,CVPredictionPaths,
config.TRIALS,RMSEPaths,False)
#### Fix #####
runModels.fixRun(mproc,modelList)
################### Setup Hybrid ###################
modelList = []
if config.SETUP_HYBRID:
print("Setting up hybrid")
hybrid.setupHybrid(utils,config,mproc,random,config.BOOTSTRAP_SPLITS[1],
CVPredictionPaths,testPredictionPaths,
modelList,config.TRIALS)
################### Run Hybrid #####################
CVPredictionPaths = []
testPredictionPaths = []
if config.RUN_HYBRID:
print("Running hybrid model")
runModels.runModels(sproc,modelList,
testPredictionPaths,CVPredictionPaths,
config.TRIALS,RMSEPaths,False)
runModels.fixRun(mproc,modelList)
################### Setup Synthesize ###################
modelList = []
if config.SETUP_SYNTHESIZE:
print("Setting up synthesis")
synthesize.setupSynthesize(utils,CVPredictionPaths,testPredictionPaths,
config.BOOTSTRAP_SPLITS[2],random,config.synthModel,
config.TRIALS,modelList,mproc,processes)
################### Run Synthesize #####################
CVPredictionPaths = []
testPredictionPaths = []
if config.RUN_SYNTHESIZE:
print("Running synthesis")
runModels.runModels(sproc,modelList,
testPredictionPaths,CVPredictionPaths,
config.TRIALS,RMSEPaths,True)
runModels.fixRun(mproc,modelList)
################### Post Process #################
if config.POST_PROCESS:
print("Starting Post-Process")
post.postProcess(os,utils,config.DE_EFFECT,config.TRIALS,userMovieRating,RMSEPaths)
################### Timer ########################
if config.TIME_RUN:
print(time.time() - start_time,"seconds")
##################################################
print("Complete and successful!")