13 from parameters import init_parser |
13 from parameters import init_parser |
14 from sparseNaiveBayes import sparseNBClassifier |
14 from sparseNaiveBayes import sparseNBClassifier |
15 from KNN import KNN,euclidean |
15 from KNN import KNN,euclidean |
16 from KNNs import KNNAdaptPointFeatures,KNNUrban |
16 from KNNs import KNNAdaptPointFeatures,KNNUrban |
17 from predefined import Predefined |
17 from predefined import Predefined |
18 from ExpandFeatures import ExpandFeatures |
18 #from ExpandFeatures import ExpandFeatures |
19 from stats import Statistics |
19 from stats import Statistics |
20 |
20 |
21 |
21 |
22 class ThreadingTCPServer(SocketServer.ThreadingTCPServer): |
22 class ThreadingTCPServer(SocketServer.ThreadingTCPServer): |
23 def __init__(self, *args, **kwargs): |
23 def __init__(self, *args, **kwargs): |
62 self.server.model = KNNAdaptPointFeatures(self.server.dicts) |
62 self.server.model = KNNAdaptPointFeatures(self.server.dicts) |
63 elif self.server.args.algorithm == 'predef': |
63 elif self.server.args.algorithm == 'predef': |
64 self.server.model = Predefined(self.server.args.predef) |
64 self.server.model = Predefined(self.server.args.predef) |
65 else: # Default case |
65 else: # Default case |
66 self.server.model = sparseNBClassifier(self.server.args.NBDefaultPriorWeight,self.server.args.NBPosWeight,self.server.args.NBDefVal) |
66 self.server.model = sparseNBClassifier(self.server.args.NBDefaultPriorWeight,self.server.args.NBPosWeight,self.server.args.NBDefVal) |
67 if self.server.args.expandFeatures: |
67 # if self.server.args.expandFeatures: |
68 self.server.expandFeatures = ExpandFeatures(self.server.dicts) |
68 # self.server.expandFeatures = ExpandFeatures(self.server.dicts) |
69 self.server.expandFeatures.initialize(self.server.dicts) |
69 # self.server.expandFeatures.initialize(self.server.dicts) |
70 # Create Model |
70 # Create Model |
71 if os.path.isfile(self.server.args.modelFile): |
71 if os.path.isfile(self.server.args.modelFile): |
72 self.server.model.load(self.server.args.modelFile) |
72 self.server.model.load(self.server.args.modelFile) |
73 elif self.server.args.init: |
73 elif self.server.args.init: |
74 trainData = self.server.dicts.featureDict.keys() |
74 trainData = self.server.dicts.featureDict.keys() |
102 if not self.server.stats.badPreds == []: |
102 if not self.server.stats.badPreds == []: |
103 bp = string.join([str(self.server.dicts.idNameDict[x]) for x in self.server.stats.badPreds], ',') |
103 bp = string.join([str(self.server.dicts.idNameDict[x]) for x in self.server.stats.badPreds], ',') |
104 self.server.logger.debug('Poor predictions: %s',bp) |
104 self.server.logger.debug('Poor predictions: %s',bp) |
105 self.server.statementCounter += 1 |
105 self.server.statementCounter += 1 |
106 |
106 |
107 if self.server.args.expandFeatures: |
107 # if self.server.args.expandFeatures: |
108 self.server.expandFeatures.update(self.server.dicts.featureDict[problemId],self.server.dicts.dependenciesDict[problemId]) |
108 # self.server.expandFeatures.update(self.server.dicts.featureDict[problemId],self.server.dicts.dependenciesDict[problemId]) |
109 # Update Dependencies, p proves p |
109 # Update Dependencies, p proves p |
110 self.server.dicts.dependenciesDict[problemId] = [problemId]+self.server.dicts.dependenciesDict[problemId] |
110 self.server.dicts.dependenciesDict[problemId] = [problemId]+self.server.dicts.dependenciesDict[problemId] |
111 self.server.model.update(problemId,self.server.dicts.featureDict[problemId],self.server.dicts.dependenciesDict[problemId]) |
111 self.server.model.update(problemId,self.server.dicts.featureDict[problemId],self.server.dicts.dependenciesDict[problemId]) |
112 |
112 |
113 def overwrite(self): |
113 def overwrite(self): |
124 name,features,accessibles,hints,numberOfPredictions = self.server.dicts.parse_problem(self.data) |
124 name,features,accessibles,hints,numberOfPredictions = self.server.dicts.parse_problem(self.data) |
125 if numberOfPredictions == None: |
125 if numberOfPredictions == None: |
126 numberOfPredictions = self.server.args.numberOfPredictions |
126 numberOfPredictions = self.server.args.numberOfPredictions |
127 if not hints == []: |
127 if not hints == []: |
128 self.server.model.update('hints',features,hints) |
128 self.server.model.update('hints',features,hints) |
129 if self.server.args.expandFeatures: |
129 # if self.server.args.expandFeatures: |
130 features = self.server.expandFeatures.expand(features) |
130 # features = self.server.expandFeatures.expand(features) |
131 # Create predictions |
131 # Create predictions |
132 self.server.logger.debug('Starting computation for line %s',self.server.callCounter) |
132 self.server.logger.debug('Starting computation for line %s',self.server.callCounter) |
133 |
133 |
134 self.server.predictions,predictionValues = self.server.model.predict(features,accessibles,self.server.dicts) |
134 self.server.predictions,predictionValues = self.server.model.predict(features,accessibles,self.server.dicts) |
135 assert len(self.server.predictions) == len(predictionValues) |
135 assert len(self.server.predictions) == len(predictionValues) |