Ejemplo n.º 1
0
    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()