Example #1
0
    def fine_tune(self,
                  data: InputData,
                  iterations: int,
                  max_lead_time: timedelta = timedelta(minutes=5)):
        """
        This method is used for hyperparameter searching

        :param data: data used for hyperparameter searching
        :param iterations: max number of iterations evaluable for hyperparameter optimization
        :param max_lead_time: max time(seconds) for tuning evaluation
        """
        self._init(data.task)

        prepared_data = data.prepare_for_modelling(is_for_fit=True)

        try:
            fitted_model, tuned_params = self._eval_strategy.fit_tuned(
                train_data=prepared_data,
                iterations=iterations,
                max_lead_time=max_lead_time)
            if fitted_model is None:
                raise ValueError(f'{self.model_type} can not be fitted')

            self.params = tuned_params
            if not self.params:
                self.params = DEFAULT_PARAMS_STUB
        except Exception as ex:
            print(f'Tuning failed because of {ex}')
            fitted_model = self._eval_strategy.fit(train_data=data)
            self.params = DEFAULT_PARAMS_STUB

        predict_train = self.predict(fitted_model, data)

        return fitted_model, predict_train
Example #2
0
    def fit(self, data: InputData):
        """
        This method is used for defining and running of the evaluation strategy
        to train the model with the data provided

        :param data: data used for model training
        :return: tuple of trained model and prediction on train data
        """
        self._init(data.task)

        prepared_data = data.prepare_for_modelling(is_for_fit=True)

        fitted_model = self._eval_strategy.fit(train_data=prepared_data)

        predict_train = self.predict(fitted_model, data)

        return fitted_model, predict_train
Example #3
0
    def predict(self,
                fitted_model,
                data: InputData,
                output_mode: str = 'default'):
        """
        This method is used for defining and running of the evaluation strategy
        to predict with the data provided

        :param fitted_model: trained model object
        :param data: data used for prediction
        """
        self._init(data.task, output_mode=output_mode)

        prepared_data = data.prepare_for_modelling(is_for_fit=False)

        prediction = self._eval_strategy.predict(trained_model=fitted_model,
                                                 predict_data=prepared_data)

        prediction = _post_process_prediction_using_original_input(
            prediction=prediction, input_data=data)

        return prediction