class PredictableModelWrapper(object): def __init__(self, model): self.model = model self.numeric_dataset = NumericDataSet() def compute(self): X,y = self.numeric_dataset.get() self.model.compute(X,y) def set_data(self, numeric_dataset): self.numeric_dataset = numeric_dataset def predict(self, image): prediction_result = self.model.predict(image) # Only take label right now: num_label = prediction_result[0] str_label = self.numeric_dataset.resolve_by_num(num_label) return str_label def update(self, name, image): self.numeric_dataset.add(name, image) class_label = self.numeric_dataset.resolve_by_str(name) extracted_feature = self.feature.extract(image) self.classifier.update(extracted_feature, class_label) def __repr__(self): return "PredictableModelWrapper (Inner Model=%s)" % (str(self.model))