def update(self): # Handle to storage for model parameters params = self._parameters print "Starting to update Decision tree regressor!" # Make sure all my meta data is ready to go params.validateMeta() observation_vectors = [] truth_vectors = [] # Make sure my model data is ready to go self._model_data.validate() self._model_data.validateViews(self.getMetaData("db_views")) # Check my model data observation_vectors = self._model_data.getMetaData( "observation_vectors") truth_vectors = self._model_data.getMetaData("truth_vectors") params.setMetaData("db_views", []) # Houston we are go dtr = DecisionTreeRegressor() dtr.criterion = params.getMetaData("criterion") dtr.splitter = params.getMetaData("splitter") max_features = params.getMetaData("max_features") if (max_features != None): dtr.max_features = max_features max_depth = params.getMetaData("max_depth") if (max_depth != None): dtr.max_depth = max_depth dtr.min_samples_split = params.getMetaData("min_samples_split") dtr.min_samples_leaf = params.getMetaData("min_samples_leaf") max_leaf_nodes = params.getMetaData("max_leaf_nodes") if (max_leaf_nodes != None): dtr.max_leaf_nodes = max_leaf_nodes dtr.random_state = params.getMetaData("random_state") dtr.presort = params.getMetaData("presort") # Evaluation mode loads several model artifacts from storage and sets them as inputs dtr.fit(observation_vectors, truth_vectors) params.setBinaryData("dtr_model", "application/pickle", pickle.dumps(dtr)) self.finalize()